我用下面的SQL從一個表連接多個數據庫列一列的結果集:連接兩個數據庫列一個結果列
SELECT (field1 + '' + field2 + '' + field3) FROM table1
當字段爲空我整個連接表達式的結果爲空。我該如何克服這一點?
該數據庫是MS SQL Server 2008.順便說說,這是連接數據庫列的最佳方式嗎?有沒有標準的SQL這樣做?
我用下面的SQL從一個表連接多個數據庫列一列的結果集:連接兩個數據庫列一個結果列
SELECT (field1 + '' + field2 + '' + field3) FROM table1
當字段爲空我整個連接表達式的結果爲空。我該如何克服這一點?
該數據庫是MS SQL Server 2008.順便說說,這是連接數據庫列的最佳方式嗎?有沒有標準的SQL這樣做?
的SQL這樣的標準的方式是:
SELECT COALESCE(field1, '') || COALESCE(field2, '') || COALESCE(field3, '') FROM table1
例子:
INSERT INTO table1 VALUES ('hello', null, 'world');
SELECT COALESCE(field1, '') || COALESCE(field2, '') || COALESCE(field3, '') FROM table1;
helloworld
使用ISNULL來克服它。
例子:
SELECT (ISNULL(field1, '') + '' + ISNULL(field2, '')+ '' + ISNULL(field3, '')) FROM table1
然後,這將取代你的NULL的內容爲空字符串將從評估作爲整體NULL結果保存concatentation操作。
如果您遇到空值問題,請使用COALESCE函數將NULL替換爲您選擇的值。然後,您的查詢應該是這樣的:
SELECT (COALESCE(field1, '') + '' + COALESCE(field2, '') + '' + COALESCE(field3,'')) FROM table1
+1東西提'COALESCE' –
與NULL正常行爲是包括空的任何操作生成空...
- 9 * NULL = NULL
- NULL + '' = NULL
- etc
爲了克服這種使用ISNULL或COALESCE以替換NULL的任何實例。
SELECT (ISNULL(field1,'') + '' + ISNULL(field2,'') + '' + ISNULL(field3,'')) FROM table1
如果兩個列中的數字,然後使用此代碼
Just Cast Column As Varchar(Size)
例子:
Select (Cast(Col1 as Varchar(20)) + '-' + Cast(Col2 as Varchar(20))) As Col3 from Table
只投柱爲varchar(尺寸)
如果兩個列中的數字,然後使用代碼如下。
例子:
Select (Cast(Col1 as Varchar(20)) + '-' + Cast(Col2 as Varchar(20))) As Col3 from Table
會是怎樣的col3
規模將是40或者
@Steve什麼是雙管?對於SQL Server來說,這不應該只是+嗎? – rsbarro
這是爲oracle –
'||'是SQL標準字符串連接運算符。這個問題問到「有沒有標準的SQL這樣做?」我正在回答這個問題。也許OP會問:「有沒有簡單的SQL方法可以做到這一點?」 –