20

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

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

4

4 回答 4

31
SELECT IFNULL(NULLIF(Field1,''),Field2)

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

于 2012-11-05T16:11:10.540 回答
8

我知道我在这里聚会迟到了,但是有一种方法可以在仍然使用 COALESCE() 的同时做到这一点。如果您的值为 NULL 或 '',这将起作用。

Select COALESCE(NULLIF(Field1,''), Field2)
于 2013-11-22T19:11:40.077 回答
6

您可以使用CASE表达式:

CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END
于 2012-11-05T16:11:43.370 回答
0

使用 CASE,比较 NULL 和 Blank。

SELECT CASE 
        WHEN Field1 IS NULL
            OR LEN(LTRIM(RTRIM(Field1))) < 1
            THEN Field2
        ELSE Field1
        END;

对于空白比较,不要使用'',使用 LEN、LTRIM、RTRIM。有时,空白可能包含多个空格。

于 2021-07-19T18:25:09.280 回答