Mysql的。如何在没有COALESCE的情况下用结果集中的某个预定义值替换NULL

时间:2015-08-17 04:35:34

标签: php mysql

我有这种类型的查询:

SELECT table1.field1, table1.field2, table2.field3
FROM table1
LEFT JOIN table2 ON (...)

因为左连接我有时候有table2.field3 NULL

之后在我的PHP脚本循环中我手动重新定义

...
$row['field3'] = ($row['field3'] === null) ? 'undefined' : $row['field3']; 
...

但我怎么能得到这个' undefined'在我的结果集中?

我已经找到了答案,COALESCE似乎有效,但它有许多奇怪的逻辑与许多论点。 好像它做我想要的,但不知何故奇怪......

我感兴趣的是,还有另一种简单的方法可以用' undefined'替换我的NULL?

2 个答案:

答案 0 :(得分:3)

你不应该害怕COALESCE ......好吧。

但是,还有其他方法:

  1. 只需使用IF& IS NULL

    SELECT table1.field1,table1.field2,IF(table2.field3 IS NULL,'undefined',table2.field3)AS field3

  2. 或者更简单,使用IFNULL(我相信你会喜欢)

    SELECT table1.field1,table1.field2,IFNULL(table2.field3,'undefined')AS field3

  3. https://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_ifnull

答案 1 :(得分:1)

您还可以使用案例,

 gsub('NA', 0, newBamAD(x)[,5])

如果您想要检查更多级别条件,可以使用嵌套大小写。