如果数据是这样的,如何在oracle中获得'id'列表?
{'id': 360006648459, 'value': None }, {'id': 360002406974, 'value': None }, {'id': 360003271394, 'value': None }, {'id': 360020289239, 'value': None } ...
我得到(null)当尝试这是预期的:
SELECT json_query(FIELD, '$.id') FROM TABLE
1rhkuytd1#
select json_value(q'~{'id': 360006648459, 'value': None}~', '$.id') from dual ;
将返回ID
select json_query(q'~{'id': 360006648459, 'value': None}~', '$.id' with wrapper) from dual ;
将返回封装到数组中的id
z8dt9xmd2#
如果你有非JSON示例数据:
CREATE TABLE table_name (field) AS SELECT q'|{'id': 360006648459, 'value': None }, {'id': 360002406974, 'value': None }, {'id': 360003271394, 'value': None }, {'id': 360020289239, 'value': None }|' FROM DUAL;
然后你可以尝试将它转换为有效的JSON,方法是将它 Package 在数组[]括号中,并将None更改为null,然后你可以使用JSON解析器:
[]
None
null
select j.id from table_name CROSS APPLY JSON_TABLE( '[' || REPLACE( field, 'None', 'null') || ']', '$[*]' COLUMNS ( id path '$.id' ) ) j;
'[' || REPLACE( REPLACE( field, 'None', 'null'), '''', '"') || ']'
其输出:| ID|| --------------|| 360006648459|| 360002406974|| 360003271394|| 360020289239|fiddle
gcmastyq3#
假设你有一个有效的json,比如'{"id": 360006648459, "value": "None"},{"id": 360002406974, "value": "None"},{"id": 360003271394, "value": "None"},{"id": 360020289239, "value": "None"}'然后,您可以使用json_table获得所需的输出
'{"id": 360006648459, "value": "None"},{"id": 360002406974, "value": "None"},{"id": 360003271394, "value": "None"},{"id": 360020289239, "value": "None"}'
json_table
select id from mytable, json_table(concat(concat('[', FIELD),']'), '$[*]' columns(id path '$.id')) t
Demo here
3条答案
按热度按时间1rhkuytd1#
将返回ID
将返回封装到数组中的id
z8dt9xmd2#
如果你有非JSON示例数据:
然后你可以尝试将它转换为有效的JSON,方法是将它 Package 在数组
[]
括号中,并将None
更改为null
,然后你可以使用JSON解析器:None
只会出现在表示null
值的上下文中;如果它可能出现在其他上下文中,则您可能无法使用此方法。*'[' || REPLACE( REPLACE( field, 'None', 'null'), '''', '"') || ']'
。*其输出:
| ID|
| --------------|
| 360006648459|
| 360002406974|
| 360003271394|
| 360020289239|
fiddle
gcmastyq3#
假设你有一个有效的json,比如
'{"id": 360006648459, "value": "None"},{"id": 360002406974, "value": "None"},{"id": 360003271394, "value": "None"},{"id": 360020289239, "value": "None"}'
然后,您可以使用
json_table
获得所需的输出Demo here