如何将字符串从右侧拆分为第二个分隔符,并且分隔符中有特殊字符?

时间:2017-07-20 20:53:03

标签: sql string split

我有一个带有完整地址行的字段应该由换行符分隔' '喜欢下面

    Primary_Address_-_Full
    3903 NE 45th Street
APT 204
Seattle, WA 98105

    20504 NE 21st Ct.
Sammamish, WA 98074

    219 W Callender St
# A2-2
Livingston, MT 59047

    102 Branegan Ct
Unit A
Bozeman, MT 59715

    8923 Ravenna Ave NE
Seattle, WA 98115


我想要的结果是在第二个之前的任何事情' '从右端,字面上在城市名称之前。我不担心左边' '在结果字符串中虽然没有它们会更好,因为我以后总是可以替换它。

结果如下:

    Primary_Address
    3903 NE 45th Street
APT 204
    20504 NE 21st Ct.
    219 W Callender St
    102 Branegan Ct
Unit A
    8923 Ravenna Ave NE

我尝试过拆分功能,但没有提供所需的结果。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以通过连续定位字符并将字符串长度段添加到一起来实现。它有点像黑客,我觉得在db之外的正则表达式可以做得更好。

select left(value,
   len(value) - (charindex(char(10), reverse(value)) + 
   charindex(char(10), substring(reverse(value), charindex(char(10), 
   reverse(value))+1, len(value))))) 
from  
   (select replace(YourField, '
', char(10)) as value from test2) x;

您还可以使用另一个替换修改外部查询,以将剩余的换行符返回到“& #xa;”