MYSQL IF(expr1,expr2,expr3)但我不想要任何expr3(如果expr3则不输出任何内容)

时间:2009-12-03 10:14:29

标签: php mysql

正如标题所说,如果if匹配,我只想要一个输出,如果它不匹配,那么我不想要任何输出。

我目前有这个,但它明显错误

...rFormat=IF(ISNULL(rFormat), VALUES(rFormat),UNCHANGED)…

我环顾了http://dev.mysql.com/doc/refman/5.4/en/control-flow-functions.html,但并没有真正了解如何做到这一点。

这个问题与Only update the MYSQL field if the field contains null or 0

有点相关

这用于以下语境中(如上面的URL所示)

………
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);

3 个答案:

答案 0 :(得分:2)

你可以简单地做

IF(ISNULL(rFormat), VALUES(rFormat), rFormat)

然而,我不确定你现在通过调用VALUES()来实现目标。

答案 1 :(得分:2)

只需使用WHERE rFormat IS NULL代替IF

答案 2 :(得分:2)

试试这个:

rFiles = COALESCE(existingColumnValue,'$ newValue')

COALESCE返回第一个非空值。请注意,如果它是一个字符串,你需要$ newValue周围的引号,并且不要忘记转义。您不会使用列名称周围的引号(existingColumnValue)。如果您还在寻找具有(INT)0作为值以及NULL的行,您可能想尝试这样:

rFiles = CASE existingColumnValue 什么时候那么'$ newValue' 什么时候0,然后'$ newValue' ELSE existingColumnValue 结束案例

我必须更改列名,以便我能更好地表达解决方案。我希望你仍然明白。我假设$ newValue不是数据库中的另一列,而是从脚本传递的变量。