提问人:User1974 提问时间:4/22/2023 最后编辑:User1974 更新时间:4/22/2023 访问量:58
分析特定的 XML 标记值
Parse specific XML tag value
问:
我有一个 SQLite 3.38.2 表,其中一列中有 XML 标签:
with cte(xml_tag) as (values
('<Event time="Sat Apr 22 1:01:51.887" type="Debug" thread="2164: Main CIM worker thread" elapsed="1" function="Geodatabase.Cursor" code="EndCursor">'),
('<Event time="Sat Apr 22 1:01:51.883" type="Debug" thread="2164: Main CIM worker thread" elapsed="23" function="Geodatabase.Cursor" code="EndCursor">'),
('<Event time="Sat Apr 22 1:01:51.874" type="Debug" thread="2164: Main CIM worker thread" elapsed="456" function="Geodatabase.Cursor" code="EndCursor">'),
('<Event time="Sat Apr 22 1:01:51.846" type="Debug" thread="2164: Main CIM worker thread" elapsed="7890" function="Geodatabase.Cursor" code="EndCursor">'))
select * from cte
我想从标签中提取数字的值:elapsed
elapsed
-------
1
23
456
7890
如何使用 SQL 查询从该 XML 标记中提取值?
答:
1赞
forpas
4/22/2023
#1
假设所有 的值都包含子字符串(仅一次),您可以使用字符串函数:xml_tag
'elapsed='
SELECT SUBSTR(xml_tag, INSTR(xml_tag, 'elapsed=') + LENGTH('elapsed=') + 1) + 0 AS elapsed
FROM cte;
通过添加到提取的字符串中,它被隐式转换为数字。0
观看演示。
评论