当一个SQL查询返回null时,我想知道是否可以让它返回一个特定的字符串,例如" Unknown"而不是null。
我目前正在JavaScript方面这样做,并且想知道在服务器上是否有更快的方法。
示例(我意识到以下语法不存在):
SELECT Customers.Email (RETURN "Unknown" IF NULL)
我想用CASE可以做到吗?但是用CASE语句填充我的查询会减慢整个操作的速度,而不是加快速度。
答案 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;