0

我有一个 MySQL DB,其列的值有时为“-1”,如何在 SELECT 期间将其更改为“0”而不对结果执行 foreach 循环。基本上,如果 DB 值为 -1,我希望“显示”值为 0。如果 DB 值是其他任何值,则应不加修改地显示。

有任何想法吗???

4

4 回答 4

4

您可以使用case语法:

select case 
       when col = -1 then 0
       else col
       end case
from Tab

或者

  select case col
           when -1 then 0
           else col
           end case
    from Tab

这里有更多信息。

或者if construct

select if(col=-1,0,col)
from Tab

这里有更多信息。

于 2012-10-03T13:36:48.640 回答
2

App.net 上的一位朋友插话道:

SELECT IF(mycol=-1, 0, mycol)

这似乎是一种享受。:)

于 2012-10-03T13:41:31.503 回答
0

或“IF”标量函数用于更短的语法

SELECT IF (col = -1, 0, col)
FROM Tab

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

于 2012-10-03T13:40:47.990 回答
0

然后 case 语句的另一个选项是 IF 函数,如下所示

//IF(expr,if_true_expr,if_false_expr)
SELECT IF(column = -1, 0, column) AS state FROM table
于 2012-10-03T13:42:56.870 回答