MS SQL - 显示动态长度的值

时间:2015-10-22 07:11:30

标签: sql sql-server regex

我的表格中有一个名为command的列,其中存储了有关应由系统发送的电子邮件的信息。

数据如下所示:

<_email><property name="To">test@test.se;test@tester.se;test@test.com</property><property name="From">sender@sender.se</property>
<_email><property name="To">test@test.se</property><property name="From">sender@sender.com</property>

我想使用select语句只显示将收到电子邮件的人的电子邮件地址。通过这样做,输出应如下所示:

第1行示例:

test@test.se;test@tester.se;test@test.com

第2行示例:

test@test.se

由于电子邮件地址的长度不同,我无法使用substring。我假设可以通过使用正则表达式以某种方式实现这一点,但我无法解决它。

你能帮帮我吗?

谢谢!

/ Krustofski

1 个答案:

答案 0 :(得分:1)

您可以使用CharIndex函数来检索字符串的开头和结尾,并使用一点数学来执行子字符串:

Select Substring(MyColumn, 
                 CharIndex('<property name="To">', MyColumn) + 20,
                 CharIndex('</property>', MyColumn) - 
                 CharIndex('<property name="To">', MyColumn) - 20
                )
From MyTable

我使用您的表格值进行了测试,但它确实有效。