问题描述
我有一个带有oracle json列的表,并使用json SQL查询函数JSON_TEXTCONTAINS,如下所示,我使用多个JSON_TEXTCONTAINS并与or / and运算符联接:
select json_value(json_value,'$.customerIdCode'),json_value(json_value,'$.TYPE')
FROM addcols_json addjson
WHERE (JSON_TEXTCONTAINS (addjson.json_value,'$.TYPE','ZHS')
or JSON_TEXTCONTAINS (addjson.json_value,'ABC'))
and (JSON_TEXTCONTAINS( addjson.json_value,'$."customerIdCode"','967')
or JSON_TEXTCONTAINS( addjson.json_value,'351'));
期望如下查询结果:
customerIdCode TYPE
967 ZHS,XXX
351 XXX,ABC
但是我明白了:
customerIdCode TYPE
967 ZHS,ABC
123 ZHS,XXX
我没想到的是低于customerIdCode(123)匹配的记录 oerpator而不在我的查询中起作用。
customerIdCode TYPE
123 ZHS,XXX
有人知道为什么,可以给我一些建议吗?
谢谢。
只需编辑我的问题,希望可以表达得更清楚。
解决方法
是因为ZSH
:
967 ZHS,XXX --> you have ZHS here (for 967)
351 XXX,ABC
123 ZHS,XXX --> but,you have ZHS here as well (for 123)
如查询所述
WHERE (JSON_TEXTCONTAINS (addjson.json_value,'$.TYPE','ZHS')
^^^
here
你得到了……好吧,你得到了什么。