What‘s wrong with Kite? ——Oracle的未解之谜

今天在测试Oracle的Json函数时,发现了一个非常怪异的现象。

首先介绍今天的主角,Oracle Json函数 json_query()
json_query主要对Json字符串进行查询操作,可以指定json_path路径去遍历json对象中的某个节点。
例如:

select json_query(t.value_schema, '$')
from (
  select '{"name": "Mike"}' value_schema from dual
) t;

此查询可取出整个json对象:
{"name": "Mike"}

然而好玩的事情来了:

select json_query(t.value_schema, '$')
from (
  select '{"name": "Mike"}' value_schema from dual union all
  select '{"name": "Kite"}' value_schema from dual
) t;

当增加了一行name为Kite的记录后,再执行上面这个SQL却发生报错:

ORA--00932: 数据类型不一致:应为 -,但却获得 CHAR

这确实很奇怪,如果修改Kite的名字为Kite+空格、Kite1等,都不会出现报错。

所以,Kite到底发生了什么?难道是不经意间发现了一个Oracle的未解之谜?

具体原因目前还不清楚,或许,又是一个程序员与糟心女友的悲伤故事,导致了一个致命Bug?

你可能感兴趣的:(#,Oracle,数据库,oracle,数据库,json)