Sql 当密钥的名称中有点时(在oracle中),如何访问JSON值?
如何获取“b.c”键的值?我需要以一种有效的方式提取2。 我只是得到零Sql 当密钥的名称中有点时(在oracle中),如何访问JSON值?,sql,json,oracle,oracle12c,Sql,Json,Oracle,Oracle12c,如何获取“b.c”键的值?我需要以一种有效的方式提取2。 我只是得到零 select js, json_value(js,'$.a') a_value, -- work correctly and give 1 json_value(js,'$.b.c') b_c_value, -- doesn't work and give null json_query(js,'$.b.c') b_c_query -- I saw this solut
select js,
json_value(js,'$.a') a_value, -- work correctly and give 1
json_value(js,'$.b.c') b_c_value, -- doesn't work and give null
json_query(js,'$.b.c') b_c_query -- I saw this solution somwhere but this also give null
from (select '{"a": "1","b.c": "2"}' js from dual) -- sample JSON
一个选项是使用DB版本12.1.0.2中引入的功能:
WITH t(js) AS
(
SELECT '{"a": "1","b.c": "2"}' FROM dual
)
SELECT a_value, b_c_value
FROM t
CROSS JOIN JSON_TABLE(js, '$'
COLUMNS (
a_value INT PATH '$.a',
b_c_value INT PATH '$."b.c"' ) )
A_VALUE B_C_VALUE
------- ---------
1 2
将键放在双引号中。所以
json_value(js,'$."b.c"') b_c_value
完整示例:
select js,
json_value(js,'$."b.c"') b_c_value
from (select '{"a": "1","b.c": "2"}' js from dual) -- sample JSON
json_值(js,“$”b.c“)
。太好了。非常感谢。请把它寄出去,这样我就可以接受了
+-----------------------+-----------+
| JS | B_C_VALUE |
+-----------------------+-----------+
| {"a": "1","b.c": "2"} | 2 |
+-----------------------+-----------+