如何搜索 CLOB 第一个字符以查看它是否为"<",查找 XML 数据



ORACLE 12.x

遇到一个数据问题,我看到过去XML数据存储在CLOB列中。一段时间以来,数据以Json形式保存在CLOB中。数据库中没有其他列可以帮助区分存储的值类型。

我怎样才能准确地选择CLOB是Json的行?如何才能准确地只选择CLOB为XML的行?

我一直在尝试使用以下内容,但担心的是Json可能在其值中包含'<'字符。因此,我认为我需要一种方法来验证第一个非空格,非空白字符是<</p>

// Find Json
SELECT *
FROM DB.COLUMN
WHERE DBMS_LOB.INSTR(CLOB_COLUMN, '<') = 0

// Find XML
SELECT *
FROM DB.COLUMN
WHERE DBMS_LOB.INSTR(CLOB_COLUMN, '<') >= 1

我认为json不能以'<'字符开头。可以用这个来查找XML列:

// Find XML
SELECT *
FROM DB.COLUMN
WHERE CLOB_COLUMN like '<%>'

和json:

// Find json
SELECT *
FROM DB.COLUMN
WHERE CLOB_COLUMN like '{%}'

//查找Json

SELECT *
FROM DB.COLUMN
WHERE CLOB_COLUMN IS JSON

//查找XML

SELECT *
FROM DB.COLUMN
WHERE CLOB_COLUMN IS NOT JSON

我对我的虚拟数据库中的所有行进行了记录计数,其中数字加起来。

  • JSON记录:38575
  • XML记录:4972
  • 记录总数:43547
  • DB: 43547

相关内容

最新更新