Sql 使用CharIndex、Len和Substring从列中定位某些信息

Sql 使用CharIndex、Len和Substring从列中定位某些信息,sql,sql-server,substring,string-length,Sql,Sql Server,Substring,String Length,以下是我试图做的,但失败惨重: 我试图从12000多个字符长的列中检索地址。幸运的是,我可以通过XML标记找到地址行1: <PermanentAddress> <AddressLine><![CDATA[1234 1st street]]></AddressLine> <City> 以下是我迄今为止所做的工作: select substring(PC.css_record, CHARINDEX('<AddressLine>

以下是我试图做的,但失败惨重:

我试图从12000多个字符长的列中检索地址。幸运的是,我可以通过XML标记找到地址行1:

<PermanentAddress> <AddressLine><![CDATA[1234 1st street]]></AddressLine> <City>
以下是我迄今为止所做的工作:

select 
substring(PC.css_record, CHARINDEX('<AddressLine>', PC.css_record)+ 21, CHARINDEX('</AddressLine>', PC.css_record))
from 
table1
我也试着压缩其中的长度函数来计算子字符串函数的长度端,但这给了我一个错误,可能是因为我对SQL还不熟悉,仍然在学习和错误地使用它

还有,有多个标签,但我只关心第一个

如果有人能帮我,那就太棒了

谢谢

你找到了开头:CHARINDEX,PC.css\u record+21 最后:查林德斯,PC.css_记录-3, 现在,您只需通过从终点减去起点来计算长度: CHARINDEX,PC.css_记录-CHARINDEX,PC.css_记录-24

你找到了开头:CHARINDEX,PC.css\u record+21 最后:查林德斯,PC.css_记录-3, 现在,您只需通过从终点减去起点来计算长度: CHARINDEX,PC.css_记录-CHARINDEX,PC.css_记录-24

试试这个:

declare @xml xml = 
'<PermanentAddress> 
<AddressLine><![CDATA[1234 1st street]]>
</AddressLine> 
<City>test</City>
</PermanentAddress>'  

select @xml.value('(/PermanentAddress/AddressLine)[1]', 'nvarchar(100)')
试试这个:

declare @xml xml = 
'<PermanentAddress> 
<AddressLine><![CDATA[1234 1st street]]>
</AddressLine> 
<City>test</City>
</PermanentAddress>'  

select @xml.value('(/PermanentAddress/AddressLine)[1]', 'nvarchar(100)')

您是否将XML数据存储为varchar而不是XML类型?是。我不认为使用xml类型有什么意义,因为我只需要报告中的一小部分信息。您是否将xml数据存储为varchar而不是xml类型?是的。我不认为使用xml类型有什么意义,因为我只需要报告中的一小部分信息。谢谢!你帮了我大忙!非常感谢。你帮了我大忙!