简化问题:
我有一个可以返回NULL的选择。
例如:
-- if the customer has no fax then NULL will be returned
select customerFax from customers
如何检查此null,然后返回一个字符串值而不是NULL,我需要在报告中显示一些友好的消息。
所以如果为null - 则返回一些字符串,否则返回db ...
中的值我希望这很容易理解 - 谢谢
答案 0 :(得分:5)
这通常使用内置的ISNULL函数完成:
SELECT ISNULL(faxNumber, 'No fax') FROM customers
更新:感谢@gdn指出如果消息长度>消息将被截断。比字段长度,在这种情况下,您可以通过将原始字段转换为与消息一样大来解决它
SELECT ISNULL(CAST(faxNumber AS VARCHAR(100), 'No fax specified at all, why didn''t you specify one before you asked me to display it for you? NEXT TIME MAYBE YOU SHOULD SPECIFY ONE.')
FROM customers
答案 1 :(得分:3)
使用CASE声明?
SELECT CASE WHEN customerFax IS NOT NULL THEN customerFax ELSE 'Friendly message' END FROM customers
答案 2 :(得分:3)
select IsNull(customerFax, 'There is no fax number specified, sorry.') AS customerFax
from customers
或者
select COALESCE(customerFax, 'There is no fax number specified, sorry.') AS customerFax
from customers
答案 3 :(得分:1)
select coalesce(customerFax, 'replacement string') from customers
coalesce
返回其参数中的第一个非null表达式。
答案 4 :(得分:0)
如果您的customerFax列长度为11个字符且替换消息较长(例如20个),则ISNULL将截断替换消息。 COALESCE和CASE不会