我正在试图找出如何提取具有以下示例值的列上的AccountNumber:
><AccountNumber>12345678</AccountNumber><Links>http://test@test123.com帐户号前后的字符串长度各不相同。
我已经尝试了下面的代码,但我想不出如何仅仅提取AccountNumber。即使是帐号也有不同的长度。
Select substring(XmlData,
charindex('><AccountNuber',XMLData),
50 )
from Item with(nolock)发布于 2016-06-09 07:45:25
如果您对每个<AccountNumber>列的记录只有一个XmlData标记,那么下面的解决方案应该有效。
SELECT SUBSTRING(XmlData,
CHARINDEX('<AccountNumber>', XmlData) + 15,
CHARINDEX('</AccountNumber>', XmlData) -
(CHARINDEX('<AccountNumber>', XmlData) + 15));如果您想提取多个值,或者给定的记录可能有多个标记,那么这种方法将无法工作,您应该考虑使用正则表达式,或者更好地考虑使用XML解析器。
https://stackoverflow.com/questions/37719667
复制相似问题