首页 > 解决方案 > oracle - json 路径中的 & 符号

问题描述

我有 json 数据,其中 json 路径中有与号。我如何逃避&符号。我已经尝试过这些东西,但没有任何效果 - 1)设置定义 2)转义&符号 - \& 3)使用双&符号 - &&

SELECT id,array1
FROM   (
  select '{
    "data": [
      {
        "id": 2,
        "array1 & tr": "TEST",
      }
    ]
  }' AS JSON_DATA
  FROM DUAL
) I,
json_table(
  i.JSON_DATA ,
  '$.data[*]'  
  COLUMNS (
    array1 varchar2(4000) FORMAT JSON path'$."array1 & tr"',
    ID     varchar2(4000) path '$."id"'
  )  
) a 

ORA-40442: JSON 路径表达式语法错误

标签: jsonoracleoracle12c

解决方案


来自 Oracle 文档:

将“&”放在大括号 {} 之间

https://docs.oracle.com/cd/B10501_01/text.920/a96518/cqspcl.htm

从另一个答案:

使用与 & 符等效的 ASCII 来确保它被解释为字符串

 "array1 " || chr(38) || " tr": "TEST",

在 SQL 字符串中转义 & 字符

我目前无法对其进行测试,但我发现这些答案与您的情况相符。


推荐阅读