2014-04-17 46 views
0

我有地址信息分析成幾個列,我試圖將列連接成一個沒有前導或尾隨空間使用視圖。我試過LTRIMRTRIM,但似乎無法弄清楚如何擺脫前/後空格。在SQL Server中連接多個列

我正在使用SQL Server 2008 R2。以下是我們如何存儲數據的示例。 Address列是我正在尋找/希望得到的輸出。

在此先感謝!

HouseNo|PreDir|StName|SufType|SufDir|UnitType|UnitNo|City |State|Zip |Address| 
123 |  |Main |St  |  |  |  |Anytown |CA |55555|123 Main St Anytown, CA 55555 
245 |  |3rd |Ave |NE |  |  |Anytown |CA |55555|245 3rd Ave NE Anytown, CA 55555 
4675 |W  |Elm |Dr  |  |  |  |Anytown |CA |55555|4675 W Elm Dr Anytown, CA 55555 
789 |E  |1st |St  |  |Apt  |5  |Anytown |CA |55555|789 E 1st St Apt 5 Anytown, CA 55555 
432 |  |Locust|Blvd |SE |  |  |Anytown |CA |55555|432 Locust Blvd SE Anytown, CA 55555 
+0

顯示您當前使用的SQL以及相關表的創建腳本。如果這些是varchar列,沒有理由應該有任何填充。 – dodexahedron

+0

我對'+'操作符很熟悉。我的關注點是如何獲得的字段或帶有空字符串的字段以顯示是否爲空。 – user3543337

+0

好的。通過一個如何做到這一點的例子修改答案。請注意,您必須將CONCAT_NULL_YIELDS_NULL設置爲ON,才能使其正常工作,以便'+ ColName結果爲空。它通常默認關閉。 – dodexahedron

回答

1

你想要的是字符串連接和COALESCE運算符的組合。COALESCE返回逗號分隔的表達式列表的第一個非空值。

實施例:

SET CONCAT_NULL_YIELDS_NULL ON; 
SELECT HouseNo + COALESCE(' ' + PreDir, '') + COALESCE(' ' + StName, '') AS Address FROM YourTable 

將導致:

Address 123 Main 245 3rd 4675 W Elm 789 E 1st 432 Locust

注意的是,上述要求CONCAT_NULL_YIELDS_NULL爲ON。 如果您不確定連接是否打開,請在SELECT之前撥打SET CONCAT_NULL_YIELDS_NULL ON。 CONCAT_NULL_YIELDS_NULL通常默認情況下是關閉的,除非已經爲您的數據庫另外設置(罕見)。

隨着CONCAT_NULL_YIELDS_NULL ON,加入' ' + PreDir將導致NULL爲,在PreDir柱,然後將使用的下一個值,'',這是一個空字符串,因此沒有導致COALESCE具有NULL的記錄。