分析特定的 XML 标记值

Parse specific XML tag value

提问人:User1974 提问时间:4/22/2023 最后编辑:User1974 更新时间:4/22/2023 访问量:58

问:

我有一个 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

db<>fiddle

我想从标签中提取数字的值:elapsed

elapsed
-------
      1
     23
    456
   7890 

如何使用 SQL 查询从该 XML 标记中提取值?

sql xml sqlite xml-解析

评论

0赞 Shawn 4/22/2023
使用您进行 sql 查询所用语言的工具。
0赞 Barbaros Özhan 4/22/2023
能帮助你回答这个问题吗?

答:

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

观看演示