SQL Charindex和SUbstring

时间:2016-06-09 07:37:32

标签: sql sql-server-2008

我正在尝试弄清楚如何使用以下示例值在我的一个列上提取AccountNumber

><AccountNumber>12345678</AccountNumber><Links>http://test@test123.com

帐号变化之前和之后的字符串长度。

我尝试了以下代码,但我无法弄清楚如何提取AccountNumber。即使帐号也有不同的长度。

Select  substring(XmlData,
                   charindex('><AccountNuber',XMLData),
                 50 )
   from Item with(nolock)

1 个答案:

答案 0 :(得分:1)

如果<AccountNumber>列的每条记录只有一个XmlData标记,则以下解决方案应该有效。

SELECT SUBSTRING(XmlData,
                 CHARINDEX('<AccountNumber>', XmlData) + 15,
                 CHARINDEX('</AccountNumber>', XmlData) -
                     (CHARINDEX('<AccountNumber>', XmlData) + 15));

如果要提取多个值,或者给定记录可能有多个标记,那么这种方法不会起作用,您应该考虑使用正则表达式,或者更好的是,使用XML解析器。