1

我有一个版本为 12.1.0.2.0 的 Oracle 数据库和我想要查询的 JSON 字段。

此查询有效:

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."de"') from DUAL

此查询返回错误ORA-40442

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."-"') from DUAL

MySQL 和 MSSQL 对连字符的查询没有问题。

我无法更改 JSON 字符串。

我怎样才能查询连字符?

4

2 回答 2

0

两个都

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."de"') from DUAL

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."-"') from DUAL

作品

除非 JSON-path-expression包含未加引号的非字母数字字符,例如:

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$.-') from DUAL

或者

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$.d-e') from DUAL

不起作用并返回错误ORA-40442

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$.de') from DUAL

工作没有问题,即使它没有引用。

Demo

于 2019-09-26T08:39:08.697 回答
-1

解决方案是使用 unicode 表示:

select JSON_VALUE('{"-": "hello", "de":"hallo"}','$."\u002d"') from DUAL
于 2019-09-26T08:14:04.093 回答