我正在尝试弄清楚如何使用以下示例值提取其中一列的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 解析器。