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