我有两个字段,我正在与MySQL的函数COALESCE()进行比较。例如,COALESCE(Field1, Field2)
。问题是,Field1有时是空白但不是null;因为它不是null COALESCE()
选择Field1,即使它是空白。在这种情况下,我需要它来选择Field2。
我知道我可以在查询中编写一个if-then-else(CASE)语句来检查这个,但是对于空白但非空字段,是否有一个很好的简单函数,如COALESCE()
? / p>
答案 0 :(得分:26)
SELECT IFNULL(NULLIF(Field1,''),Field2)
如果Field1为空,则NULLIF返回NULL,而如果Iso1不为空,则IFNULL返回Field1,否则返回Field2。
答案 1 :(得分:6)
您可以使用CASE
表达式:
CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END
答案 2 :(得分:6)
我知道我在这里参加派对已经很晚了,但是在使用COALESCE()的同时还有办法做到这一点。如果您的值为NULL或''。
,则可以使用此功能Select COALESCE(NULLIF(Field1,''), Field2)
答案 3 :(得分:0)
使用 CASE,用于比较 NULL 和 Blank。
SELECT CASE
WHEN Field1 IS NULL
OR LEN(LTRIM(RTRIM(Field1))) < 1
THEN Field2
ELSE Field1
END;
比较空白,不要使用'',使用LEN、LTRIM、RTRIM。有时,空白可能包含多个空格。