我想在“DATASTRING”列中找到“LIID”字符串的所有位置,以帮助查找所有LLID值。
DATASTRING列包含MIXED数据,它是无效的XML文件。
查询:
select id , DATASTRING from mixdatatable
输出:
id DATASTRING
1 ABC XYZ IS 1 ..
<ObjectValue /><CP /><SIProps ST="4" PL="False" PLS="" />
<STI_SummaryActiveProblemsField LIID="cdbd7044-ccde-11db-8cba-df0a56d89593" IID="37742a5f-7998-4715-8d43-0d7a19284d44" IR="True" RW="1">
<HD Title="Active Problems" /><ObjectValue />
<CP><PosReplace /><NegReplace /></CP><SIProps ST="4" PL="False" PLS="" />
-<STI_DxItem IID="d85c91e7-703f-4f8c-9a38-961fb2d14828" RW="1" LIID="03e4da86-d57c-408e-9479-b6fb97cc9a60"><HD Title=" unspecified "/>
<STI_US><ObjectValue><TextValue><![CDATA[
]]></TextValue></ObjectValue><CP />
<LIID='71194038-8ffb-488b-8af5-5f1f1a679115'>
<SIProps ST="1" SS=" " PL="False" PLS="" />
</STI_US> AAAAAA
979816816/881783683618317381-817
我想找到所有LIID值。 LLID值lenth为'36',例如'cdbd7044-ccde-11db-8cba-df0a56d89593'
预期产出:
ID LLID
1 cdbd7044-ccde-11db-8cba-df0a56d89593
1 03e4da86-d57c-408e-9479-b6fb97cc9a60
1 71194038-8ffb-488b-8af5-5f1f1a679115
PostgreSQL版本8.3
注意:我没有创建功能或程序。
答案 0 :(得分:3)
select id, unnest(regexp_matches(datastring,'LIID=[''"]([0-9a-f-]+)','g'))
from mixdatatable
上进行测试