我正在尝试弄清楚如何使用以下示例值在我的一个列上提取AccountNumber
:
><AccountNumber>12345678</AccountNumber><Links>http://test@test123.com
帐号变化之前和之后的字符串长度。
我尝试了以下代码,但我无法弄清楚如何提取AccountNumber
。即使帐号也有不同的长度。
Select substring(XmlData,
charindex('><AccountNuber',XMLData),
50 )
from Item with(nolock)
答案 0 :(得分:1)
如果<AccountNumber>
列的每条记录只有一个XmlData
标记,则以下解决方案应该有效。
SELECT SUBSTRING(XmlData,
CHARINDEX('<AccountNumber>', XmlData) + 15,
CHARINDEX('</AccountNumber>', XmlData) -
(CHARINDEX('<AccountNumber>', XmlData) + 15));
如果要提取多个值,或者给定记录可能有多个标记,那么这种方法不会起作用,您应该考虑使用正则表达式,或者更好的是,使用XML解析器。