尝试使用 SQL 在 Clob 中查找值
Trying to find a value in a Clob using SQL
我正在尝试在 SQl 语句中创建一个列,该列将显示包含 XML 的 Clob 是否具有设置值。
我尝试了以下方法,但似乎不起作用:
NVL2(dbms_lob.substr(XML_DATA, length('<MirrorId></MirrorId>'), dbms_lob.instr(XML_DATA,'<MirrorId></MirrorId>')),'Found','Not Found') as TestColumn
当我 运行 这段代码时,当有数据时,它总是显示为未找到。
有什么建议吗?
米歇尔
因为您的 post 不是 100% 清楚,我将根据您尝试的查询做出一些假设:
- xml_data 列永远不会为空。
- xml_data 列永远不会有空的 clob
- 如果 clob 恰好包含
<MirrorId></MirrorId>
,那么您认为它是 'Not Found',其他任何东西都应该 return 'Found'.
如果这些假设是正确的,那么以下查询应该适合您:
SELECT CASE WHEN dbms_lob.instr(xml_data, '<MirrorId></MirrorId>') <> 0
THEN 'Not Found'
ELSE 'Found'
END AS TestColumn
FROM <your_table_name>;
我正在尝试在 SQl 语句中创建一个列,该列将显示包含 XML 的 Clob 是否具有设置值。
我尝试了以下方法,但似乎不起作用:
NVL2(dbms_lob.substr(XML_DATA, length('<MirrorId></MirrorId>'), dbms_lob.instr(XML_DATA,'<MirrorId></MirrorId>')),'Found','Not Found') as TestColumn
当我 运行 这段代码时,当有数据时,它总是显示为未找到。
有什么建议吗?
米歇尔
因为您的 post 不是 100% 清楚,我将根据您尝试的查询做出一些假设:
- xml_data 列永远不会为空。
- xml_data 列永远不会有空的 clob
- 如果 clob 恰好包含
<MirrorId></MirrorId>
,那么您认为它是 'Not Found',其他任何东西都应该 return 'Found'.
如果这些假设是正确的,那么以下查询应该适合您:
SELECT CASE WHEN dbms_lob.instr(xml_data, '<MirrorId></MirrorId>') <> 0
THEN 'Not Found'
ELSE 'Found'
END AS TestColumn
FROM <your_table_name>;