> ORA-00904: "JSON_EXISTS": invalid identifier报错,请使用其他的SQL语句
时间: 2024-12-10 19:53:19 浏览: 30
ORA-00904错误通常表示在SQL语句中引用了一个无效的标识符,如函数、列名或别名。针对`JSON_EXISTS`这个函数在Oracle中不存在,因为它是基于JSON的支持,Oracle 12c及以后版本才开始支持标准的JSON相关的操作。如果你在早期版本中遇到这个问题,可以尝试使用其他方法来检查是否存在某个键。例如,你可以先解析JSON字符串,然后再检查条件:
```sql
DECLARE
v_request JSON;
BEGIN
SELECT requestctnt INTO v_request
FROM mbplogtrace
WHERE requestctnt IS NOT NULL;
IF DBMS_ASSERT.JSON_VALUE(v_request, '$.startdate') IS NOT NULL THEN
-- 存在
dbms_output.put_line('startdate exists');
ELSE
-- 不存在
dbms_output.put_line('startdate does not exist');
END IF;
EXCEPTION
WHEN OTHERS THEN
-- 处理异常
dbms_output.put_line('Error: ' || SQLERRM);
END;
/
```
或者,你可以直接使用`JSON_TABLE`函数转换JSON到行级数据,然后进行比较:
```sql
SELECT CASE WHEN EXISTS (
SELECT 1 FROM TABLE(
DBMS_JSON.GET_JSON_TABLE(mbplogtrace.requestctnt, '$', 'STARTDATE')
)
WHERE STARTDATE = '2024-10-01'
) THEN 'Exists' ELSE 'Does not Exist' END AS status
FROM mbplogtrace;
```
阅读全文