2010-05-12 81 views
2
SELECT a.one + ' test ' +b.two from table1 a right join table1 on a.id =b.id 

的問題是,當一個爲null,則它的整個字符串爲空,有沒有一些什麼把戲來回避這個問題 MSSQL 2005SQL字符串添加問題

+1

http://stackoverflow.com/questions/2811733/concatenating-results-from-sql-query-and-null-columns/的重複輸出什麼幾種變化 – Konerak 2010-05-12 06:15:44

回答

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。

2

這取決於您希望結果是一個或兩個輸入爲空時的結果。如果你只是想每個部分坍塌爲空字符串,使用ISNULL:

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

否則,你就必須弄巧用CASE表達式。

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