这里就是我想要做的,但惨遭失败:
我试图从一列,它是长期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和仍然在学习和使用是错误的)。
此外,还有多个标签,但我只关心第一个。
这将是非常真棒,如果有人可以帮助我!
谢谢!
尝试这个 :
declare @xml xml =
'<PermanentAddress>
<AddressLine><![CDATA[1234 1st street]]>
</AddressLine>
<City>test</City>
</PermanentAddress>'
select @xml.value('(/PermanentAddress/AddressLine)[1]', 'nvarchar(100)')
你发现开头: CHARINDEX('<AddressLine>', PC.css_record) + 21
和端部: CHARINDEX('</AddressLine>', PC.css_record) - 3
,
现在你只需要通过从端部中减去开始计算长度: CHARINDEX('</AddressLine>', PC.css_record) - CHARINDEX('<AddressLine>', PC.css_record) - 24
select
substring(PC.css_record,
CHARINDEX('<AddressLine>', PC.css_record) + 21,
CHARINDEX('</AddressLine>', PC.css_record)
- CHARINDEX('<AddressLine>', PC.css_record) - 24)
from
PC
文章来源: Using CharIndex, Len and Substring to locate certain information from a column