COALESCE()表示空白(但不是空)字段

Luk*_*een 17 mysql sql coalesce

我有两个字段,我正在与MySQL的函数COALESCE()进行比较.例如,COALESCE(Field1, Field2).问题是,Field1有时是空白但不是null; 因为它不是null COALESCE(),所以选择Field1,即使它是空白的.在那种情况下,我需要它来选择Field2.

我知道我可以在查询中编写一个if-then-else(CASE)语句来检查这个,但是有一个很好的简单函数,比如COALESCE()blank-but-not-null字段吗?

And*_*ios 28

SELECT IFNULL(NULLIF(Field1,''),Field2)
Run Code Online (Sandbox Code Playgroud)

如果Field1为空,则NULLIF返回NULL,而如果Iso1不为空,则IFNULL返回Field1,否则返回Field2.

  • 我可以这样做,但COALESCE是否正确?`COALESCE(NULLIF(Field1,''),Field2)` - 是否存在速度/处理负载差异? (4认同)

ype*_*eᵀᴹ 6

您可以使用CASE表达式:

CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END
Run Code Online (Sandbox Code Playgroud)

  • 现在它是一行:) (5认同)

Bea*_*use 6

我知道我在这里参加派对已经很晚了,但是有一种方法可以在使用COALESCE()的同时做到这一点.如果您的值为NULL或'',那么这将起作用.

Select COALESCE(NULLIF(Field1,''), Field2)
Run Code Online (Sandbox Code Playgroud)

  • 查看所选答案的评论:) (2认同)