尝试使用 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>;