我将地址信息解析为多个列,并且我尝试使用视图将列连接成一个没有前导或尾随空格的列。我尝试了LTRIM
和RTRIM
,但似乎无法弄清楚如何摆脱前导/尾随空格。
我正在使用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 :(得分: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使用下一个值''
,这是一个空字符串没什么。