String T-SQL解析字符串的一部分

String T-SQL解析字符串的一部分,string,tsql,parsing,String,Tsql,Parsing,请帮助我使用SQL 2008中的T-SQL查询来获取从第一个双引号到第二个双引号之间的值。字符串将有许多双引号。XXX将具有可变长度 它会回来的abc@pluto.com 纵队 XXX Usr=”abc@pluto.com“zone=“fyrkk=“0”htyy”ukbpfrtt897=“009”/ 非常感谢。一旦知道这些索引,您需要一个CHARINDEX()的组合来查找引号的位置和SUBSTRING()来选择所需字符串的部分。不幸的是,CHARINDEX()给出了第一个实例,因此这需要做一些工

请帮助我使用SQL 2008中的T-SQL查询来获取从第一个双引号到第二个双引号之间的值。字符串将有许多双引号。XXX将具有可变长度

它会回来的abc@pluto.com 纵队

XXX Usr=”abc@pluto.com“zone=“fyrkk=“0”htyy”ukbpfrtt897=“009”/


非常感谢。

一旦知道这些索引,您需要一个CHARINDEX()的组合来查找引号的位置和SUBSTRING()来选择所需字符串的部分。不幸的是,CHARINDEX()给出了第一个实例,因此这需要做一些工作

SELECT SUBSTRING(column, CHARINDEX('"', column), CHARINDEX('"', SUBSTRING(column, CHARINDEX('"', column), 100)))
为了更好地理解这一点,请将CHARINDEX(“”,列)替换为q1(第一个引号的索引)

将列的子字符串从q1取到(索引第一次出现的“在q1之后的所有内容中”)。100可以是比那封邮件的最大长度长的任何整数,我只是想确保第二个报价被包括在内,并且没有问题。玩这个游戏,可能会有一个关闭一个错误

子字符串(字、起始、长度)
CHARINDEX(word,char)

使用CHARINDEX查找双引号和子字符串以获取字符串

对于我来说,这似乎是唯一错误的XML语法

DECLARE @XMLData XML = N'<Node Usr="abc@pluto.com" zone="" fyrkkk="0" htyy="" ukbpfrttt897="009" />'

SELECT tab.col.value('@Usr','NVARCHAR(128)') AS UserMail
   FROM @XMLData.nodes('/Node[1]') AS tab(col)
DECLARE@XMLData XML=N''
选择tab.col.value(“@Usr”和“NVARCHAR(128)”作为用户邮件
从@XMLData.nodes('/Node[1]')作为选项卡(列)
DECLARE @XMLData XML = N'<Node Usr="abc@pluto.com" zone="" fyrkkk="0" htyy="" ukbpfrttt897="009" />'

SELECT tab.col.value('@Usr','NVARCHAR(128)') AS UserMail
   FROM @XMLData.nodes('/Node[1]') AS tab(col)