json路径中的oracle-ampersand

json路径中的oracle-ampersand,json,oracle,oracle12c,Json,Oracle,Oracle12c,我有json数据,其中json路径中有符号和。我如何使用安培和。我试过这些东西,但都不管用- 1) 抵销 2) 逃逸符-\& 3) 使用双安培-&& SELECT id,array1 FROM ( select '{ "data": [ { "id": 2, "array1 & tr": "TEST", } ] }' AS JSON_DATA FROM DUAL ) I, json_table(

我有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路径表达式语法错误

从Oracle文档:

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

()

从另一个答案来看:

使用ASCII等效的符号和,以确保它被解释为字符串

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

我目前无法测试,但我发现这些答案与您的案例相符。

来自Oracle文档:

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

()

从另一个答案来看:

使用ASCII等效的符号和,以确保它被解释为字符串

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


我目前无法测试它,但我发现这些答案与您的案例相符。

我最终这样做了;请注意,使用unicode\u0026而不是chr(38):“FOO\u和uu-BAR”路径“$”FOO\u0026-BAR“

我最后这样做了;请注意,使用unicode\u0026而不是chr(38):“FOO\u和_-BAR”路径“$”FOO\u0026-BAR“

这是否回答了您的问题?不存在问题,我也在12.1.0.2版本中进行了尝试。你确定问题中的样本吗?谢谢@Barbaros的帮助。不,它在oracle 12c中对我不起作用。我已经做了一个变通方法,将“&”替换为“and”。感谢@Dortimer的帮助,我将“&”替换为“and”,这是否回答了您的问题?不存在问题,我也在12.1.0.2版本中进行了尝试。你确定问题中的样本吗?谢谢@Barbaros的帮助。不,它在oracle 12c中对我不起作用。我已经做了一个变通方法,将“&”替换为“and”。感谢@Dortimer的帮助,我将“&”替换为“and”
{}
这是针对Oracle文本的。不知道它是否在数据库中工作。这会导致错误“JSON路径表达式语法错误('$.”FOO“| | chr(38)| | | BAR“))JZN-00209:路径结束后出现意外字符”
{}
这是针对Oracle文本的。不知道它是否在数据库中工作。这会导致错误“JSON路径表达式语法错误('$.“FOO”| | chr(38)| |“BAR”))JZN-00209:路径结束后出现意外字符”