如果列为null,则返回特定字符串的SQL查询?

时间:2016-06-06 07:24:53

标签: mysql sql select null

当一个SQL查询返回null时,我想知道是否可以让它返回一个特定的字符串,例如" Unknown"而不是null。

我目前正在JavaScript方面这样做,并且想知道在服务器上是否有更快的方法。

示例(我意识到以下语法不存在):

SELECT Customers.Email (RETURN "Unknown" IF NULL)

我想用CASE可以做到吗?但是用CASE语句填充我的查询会减慢整个操作的速度,而不是加快速度。

3 个答案:

答案 0 :(得分:5)

您可以使用coalesce

SELECT COALESCE(email, 'Unknown')
FROM   customers

答案 1 :(得分:2)

在MySQL中,您可以使用IFNULL

SELECT IFNULL(Customers.Email, 'Unknown') AS Email 

答案 2 :(得分:2)

虽然COALESCE是最佳解决方案,但也有CASE 如果你必须处理空值或空字符串,这可能很方便。

SELECT CASE Customers.Email
    WHEN NULL THEN 'Unknown'
    WHEN '' THEN 'Unknown'
    ELSE Customers.Email
    END AS Email
FROM Customers;

SELECT CASE
    WHEN Customers.Email IS NULL THEN 'Unknown'
    WHEN TRIM(Customers.Email) = '' THEN 'Unknown'
    ELSE Customers.Email
    END AS Email
FROM Customers;