SELECT a.one + ' test ' +b.two from table1 a right join table1 on a.id =b.id
的问题是,当一个为null,则它的整个字符串为空,有没有一些什么把戏来回避这个问题 MSSQL 2005SQL字符串添加问题
SELECT a.one + ' test ' +b.two from table1 a right join table1 on a.id =b.id
的问题是,当一个为null,则它的整个字符串为空,有没有一些什么把戏来回避这个问题 MSSQL 2005SQL字符串添加问题
您正在寻找ISNULL
功能:
SELECT ISNULL(a.one,'') + ' test ' + ISNULL(b.two , '')
from table1 a
right join table1 b
on a.id =b.id
如果ISNULL
函数的第一个参数为空,则提供第二个参数。 这样,连接的字段都不会返回null,您将得到一个字符串而不是null。
这取决于您希望结果是一个或两个输入为空时的结果。如果你只是想每个部分坍塌为空字符串,使用ISNULL:
ISNULL(a.one, '') + ' test ' + ISNULL(b.two, '')
否则,你就必须弄巧用CASE表达式。
有这取决于你想要
-- leading/trailing spaces on test
SELECT ISNULL(a.one,'') + ' test ' + ISNULL(b.two , '')
-- no spacing around test
SELECT ISNULL(a.one,' ') + 'test' + ISNULL(' ' + b.two, '')
-- do you want the word test at all if one is blank?
SELECT ISNULL(a.one + ' test','') + ISNULL(' ' + b.two, '')
http://stackoverflow.com/questions/2811733/concatenating-results-from-sql-query-and-null-columns/的重复输出什么几种变化 – Konerak 2010-05-12 06:15:44