Sql字符串添加问题

时间:2010-05-12 06:11:34

标签: sql sql-server tsql

SELECT a.one + ' test ' +b.two from table1 a right join table1 on a.id =b.id 

问题是当一个为null然后它整个字符串为null,是否有某种技巧可以绕过这个问题 msSQL 2005

3 个答案:

答案 0 :(得分:3)

您正在寻找ISNULL功能:

SELECT ISNULL(a.one,'') + ' test ' + ISNULL(b.two , '')
from table1 a 
right join table1 b 
  on a.id =b.id 

如果ISNULL函数的第一个参数为null,则提供第二个参数。 这样,所有连接字段都不会返回null,您将获得一个字符串而不是null。

答案 1 :(得分:2)

当一个或两个输入为空时,它取决于您希望结果是什么。如果您只想将每个部分折叠为空字符串,请使用ISNULL:

ISNULL(a.one, '') + ' test ' + ISNULL(b.two, '')

否则,你必须聪明地使用CASE表达式。

答案 2 :(得分:1)

根据您想要的输出,有几种变化

-- 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, '')