我有两个字段要与 MySQL 的函数COALESCE()进行比较。例如,COALESCE(Field1, Field2)
。问题是,Field1 有时为空但不为空;因为它不是空的COALESCE()
,所以选择 Field1,即使它是空白的。在这种情况下,我需要它来选择 Field2。
我知道我可以在查询中编写一个 if-then-else (CASE) 语句来检查这一点,但是是否有一个很好的简单函数,比如COALESCE()
空白但非空字段?
我有两个字段要与 MySQL 的函数COALESCE()进行比较。例如,COALESCE(Field1, Field2)
。问题是,Field1 有时为空但不为空;因为它不是空的COALESCE()
,所以选择 Field1,即使它是空白的。在这种情况下,我需要它来选择 Field2。
我知道我可以在查询中编写一个 if-then-else (CASE) 语句来检查这一点,但是是否有一个很好的简单函数,比如COALESCE()
空白但非空字段?
SELECT IFNULL(NULLIF(Field1,''),Field2)
如果 Field1 为空,则 NULLIF 返回 NULL,而如果 Field1 不为空或 NULL,则 IFNULL 返回 Field1,否则返回 Field2。
我知道我在这里聚会迟到了,但是有一种方法可以在仍然使用 COALESCE() 的同时做到这一点。如果您的值为 NULL 或 '',这将起作用。
Select COALESCE(NULLIF(Field1,''), Field2)
您可以使用CASE
表达式:
CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END
使用 CASE,比较 NULL 和 Blank。
SELECT CASE
WHEN Field1 IS NULL
OR LEN(LTRIM(RTRIM(Field1))) < 1
THEN Field2
ELSE Field1
END;
对于空白比较,不要使用'',使用 LEN、LTRIM、RTRIM。有时,空白可能包含多个空格。