SQL Charindex and SUbstring



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

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

帐号前后的字符串长度各不相同。

我已经尝试了下面的代码,但我无法弄清楚如何提取AccountNumber.甚至帐号也有不同的长度。

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

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

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

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

最新更新