Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PLSQL:删除Json中不需要的双引号_Sql_Json_Oracle - Fatal编程技术网

PLSQL:删除Json中不需要的双引号

PLSQL:删除Json中不需要的双引号,sql,json,oracle,Sql,Json,Oracle,我有这样一个Json(它包含在clob变量中): 我需要从以下值中删除“:id,val,sg1,sg2 可能吗 例如,我需要获得以下信息: {"id": 33, "type": "abc", "val": 2, "cod": "", "sg1": 1, "sg2": 1} {"id": 359, "type": "abcef", "val": 52, "cod": "aa", "sg1": , "sg2": 0} … 如果您使用的是Oracle 12(R2?)或更高版本,则可以将JSON转换为

我有这样一个Json(它包含在clob变量中):

我需要从以下值中删除
id
val
sg1
sg2

可能吗

例如,我需要获得以下信息:

{"id": 33, "type": "abc", "val": 2, "cod": "", "sg1": 1, "sg2": 1}
{"id": 359, "type": "abcef", "val": 52, "cod": "aa", "sg1": , "sg2": 0}
…

如果您使用的是Oracle 12(R2?)或更高版本,则可以将JSON转换为适当的数据类型,然后再将其转换回JSON

Oracle 18安装程序

CREATE TABLE test_data ( value CLOB );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "33", "type": "abc", "val": "2", "cod": "", "sg1": "1", "sg2": "1"}' );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "359", "type": "abcef", "val": "52", "cod": "aa", "sg1": "", "sg2": "0"}' );
SELECT JSON_OBJECT(
         'id'   IS j.id,
         'type' IS j.typ,
         'val'  IS j.val,
         'cod'  IS j.cod,
         'sg1'  IS j.sg1,
         'sg2'  IS j.sg2
       ) AS JSON
FROM   test_data t
       CROSS JOIN
       JSON_TABLE(
         t.value,
         '$'
         COLUMNS
           id  NUMBER(5,0) PATH '$.id',
           typ VARCHAR2(10) PATH '$.type',
           val NUMBER(5,0) PATH '$.val',
           cod VARCHAR2(10) PATH '$.cod',
           sg1 NUMBER(5,0) PATH '$.sg1',
           sg2 NUMBER(5,0) PATH '$.sg2'
       ) j
| JSON | | :--------------------------------------------------------------- | | {"id":33,"type":"abc","val":2,"cod":null,"sg1":1,"sg2":1} | | {"id":359,"type":"abcef","val":52,"cod":"aa","sg1":null,"sg2":0} |
SELECT REGEXP_REPLACE(
         REGEXP_REPLACE(
           value,
           '"(id|val|sg1|sg2)": ""',
           '"\1": "null"'
         ),
         '"(id|val|sg1|sg2)": "(\d+|null)"',
         '"\1": \2'
       ) AS JSON
FROM   test_data
| JSON | | :-------------------------------------------------------------------------- | | {"id": 33, "type": "abc", "val": 2, "cod": "", "sg1": 1, "sg2": 1} | | {"id": 359, "type": "abcef", "val": 52, "cod": "aa", "sg1": null, "sg2": 0} | 查询

CREATE TABLE test_data ( value CLOB );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "33", "type": "abc", "val": "2", "cod": "", "sg1": "1", "sg2": "1"}' );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "359", "type": "abcef", "val": "52", "cod": "aa", "sg1": "", "sg2": "0"}' );
SELECT JSON_OBJECT(
         'id'   IS j.id,
         'type' IS j.typ,
         'val'  IS j.val,
         'cod'  IS j.cod,
         'sg1'  IS j.sg1,
         'sg2'  IS j.sg2
       ) AS JSON
FROM   test_data t
       CROSS JOIN
       JSON_TABLE(
         t.value,
         '$'
         COLUMNS
           id  NUMBER(5,0) PATH '$.id',
           typ VARCHAR2(10) PATH '$.type',
           val NUMBER(5,0) PATH '$.val',
           cod VARCHAR2(10) PATH '$.cod',
           sg1 NUMBER(5,0) PATH '$.sg1',
           sg2 NUMBER(5,0) PATH '$.sg2'
       ) j
| JSON | | :--------------------------------------------------------------- | | {"id":33,"type":"abc","val":2,"cod":null,"sg1":1,"sg2":1} | | {"id":359,"type":"abcef","val":52,"cod":"aa","sg1":null,"sg2":0} |
SELECT REGEXP_REPLACE(
         REGEXP_REPLACE(
           value,
           '"(id|val|sg1|sg2)": ""',
           '"\1": "null"'
         ),
         '"(id|val|sg1|sg2)": "(\d+|null)"',
         '"\1": \2'
       ) AS JSON
FROM   test_data
| JSON | | :-------------------------------------------------------------------------- | | {"id": 33, "type": "abc", "val": 2, "cod": "", "sg1": 1, "sg2": 1} | | {"id": 359, "type": "abcef", "val": 52, "cod": "aa", "sg1": null, "sg2": 0} | 输出

CREATE TABLE test_data ( value CLOB );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "33", "type": "abc", "val": "2", "cod": "", "sg1": "1", "sg2": "1"}' );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "359", "type": "abcef", "val": "52", "cod": "aa", "sg1": "", "sg2": "0"}' );
SELECT JSON_OBJECT(
         'id'   IS j.id,
         'type' IS j.typ,
         'val'  IS j.val,
         'cod'  IS j.cod,
         'sg1'  IS j.sg1,
         'sg2'  IS j.sg2
       ) AS JSON
FROM   test_data t
       CROSS JOIN
       JSON_TABLE(
         t.value,
         '$'
         COLUMNS
           id  NUMBER(5,0) PATH '$.id',
           typ VARCHAR2(10) PATH '$.type',
           val NUMBER(5,0) PATH '$.val',
           cod VARCHAR2(10) PATH '$.cod',
           sg1 NUMBER(5,0) PATH '$.sg1',
           sg2 NUMBER(5,0) PATH '$.sg2'
       ) j
| JSON | | :--------------------------------------------------------------- | | {"id":33,"type":"abc","val":2,"cod":null,"sg1":1,"sg2":1} | | {"id":359,"type":"abcef","val":52,"cod":"aa","sg1":null,"sg2":0} |
SELECT REGEXP_REPLACE(
         REGEXP_REPLACE(
           value,
           '"(id|val|sg1|sg2)": ""',
           '"\1": "null"'
         ),
         '"(id|val|sg1|sg2)": "(\d+|null)"',
         '"\1": \2'
       ) AS JSON
FROM   test_data
| JSON | | :-------------------------------------------------------------------------- | | {"id": 33, "type": "abc", "val": 2, "cod": "", "sg1": 1, "sg2": 1} | | {"id": 359, "type": "abcef", "val": 52, "cod": "aa", "sg1": null, "sg2": 0} | 输出

CREATE TABLE test_data ( value CLOB );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "33", "type": "abc", "val": "2", "cod": "", "sg1": "1", "sg2": "1"}' );
INSERT INTO test_data ( value )
  VALUES ( '{"id": "359", "type": "abcef", "val": "52", "cod": "aa", "sg1": "", "sg2": "0"}' );
SELECT JSON_OBJECT(
         'id'   IS j.id,
         'type' IS j.typ,
         'val'  IS j.val,
         'cod'  IS j.cod,
         'sg1'  IS j.sg1,
         'sg2'  IS j.sg2
       ) AS JSON
FROM   test_data t
       CROSS JOIN
       JSON_TABLE(
         t.value,
         '$'
         COLUMNS
           id  NUMBER(5,0) PATH '$.id',
           typ VARCHAR2(10) PATH '$.type',
           val NUMBER(5,0) PATH '$.val',
           cod VARCHAR2(10) PATH '$.cod',
           sg1 NUMBER(5,0) PATH '$.sg1',
           sg2 NUMBER(5,0) PATH '$.sg2'
       ) j
| JSON | | :--------------------------------------------------------------- | | {"id":33,"type":"abc","val":2,"cod":null,"sg1":1,"sg2":1} | | {"id":359,"type":"abcef","val":52,"cod":"aa","sg1":null,"sg2":0} |
SELECT REGEXP_REPLACE(
         REGEXP_REPLACE(
           value,
           '"(id|val|sg1|sg2)": ""',
           '"\1": "null"'
         ),
         '"(id|val|sg1|sg2)": "(\d+|null)"',
         '"\1": \2'
       ) AS JSON
FROM   test_data
| JSON | | :-------------------------------------------------------------------------- | | {"id": 33, "type": "abc", "val": 2, "cod": "", "sg1": 1, "sg2": 1} | | {"id": 359, "type": "abcef", "val": 52, "cod": "aa", "sg1": null, "sg2": 0} | |JSON| | :-------------------------------------------------------------------------- | |{“id”:33,“type”:“abc”,“val”:2,“cod”:“,“sg1”:1,“sg2”:1}| |{“id”:359,“type”:“abcef”,“val”:52,“cod”:“aa”,“sg1”:null,“sg2”:0}|
dbfiddle

您使用的是哪一版本的Oracle?
“sg1”:,
无效。另外,修复创建JSON的任何内容不是更好,而不是事后尝试操作它吗?不幸的是,生成JSON的是外部应用程序