我正在运行Oracle 10gR2数据库,我们导入xml信息并将其存储在CLOB中。我试图计算一个短语'nIIN'出现在CLOB中并除以2的次数。
select count(REGEXP_SUBSTR(rec_data, '[=nIIN=]', 'i'))
from gcssmc_imports_data
where interface_name = 'MATS'
and created_date like to_char(sysdate,'DD-MON-YY');
上面是我放在一起的查询,但我遗漏了一些东西。
这是错误:
Error starting at line 1 in command:
select count(REGEXP_SUBSTR(rec_data, '[=nIIN=]', 'i')) from gcssmc_imports_data where interface_name = 'MATS' and created_date like to_char(sysdate,'DD-MON-YY')
Error at Command Line:1 Column:13
Error report:
SQL Error: ORA-00932: inconsistent datatypes: expected - got CLOB
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:
非常感谢任何帮助。
答案 0 :(得分:0)
错误消息为您提供所需的线索:
Error at Command Line:1 Column:13
这是指查询的这一部分:
1234567890123
select count(REGEXP_SUBSTR(rec_data,
count
期待数字,字符串或其他简单数据类型。但是,这里的REGEXP_SUBSTR返回一个CLOB,因为它是它的第一个参数(rec_data)。
我建议您更改查询以使用REGEXP_INSTR - 如果未找到子字符串则返回0,例如:
select count(case when REGEXP_INSTR(rec_data, '[=nIIN=]', 'i') = 0
then null
else 1
end) ...