连接SQL Server中的多个列

时间:2014-04-17 00:12:54

标签: sql sql-server

我将地址信息解析为多个列,并且我尝试使用视图将列连接成一个没有前导或尾随空格的列。我尝试了LTRIMRTRIM,但似乎无法弄清楚如何摆脱前导/尾随空格。

我正在使用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

1 个答案:

答案 0 :(得分: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将导致PreDir列中具有NULL的记录为NULL,这将导致COALESCE使用下一个值'',这是一个空字符串没什么。