如何在PostgreSQL中编写含IN运算符的JSONPath过滤谓词
PostgreSQL JSONPath 实现 IN 语义的正确写法
你原来的等值校验语句没问题,但PostgreSQL的JSONPath语法不支持IN [数组]这种写法,得换成下面两种符合语法规范的写法,同时完全保留你原有查询结构:
写法一:使用in() 运算符
直接用圆括号包裹目标值列表,这是JSONPath标准的范围判断写法:
du.data @@ '$.some.data[*].** ? (@.propertyid == "1").anotherprop in ("SomeValue", "anotherValue")'
写法二:使用= any() 配合数组字面量
如果偏好数组形式的写法,可以用any()函数来匹配数组中的任意值:
du.data @@ '$.some.data[*].** ? (@.propertyid == "1").anotherprop = any(["SomeValue", "anotherValue"])'
这两种写法都能实现你要的“校验anotherprop是否在指定值列表中”的逻辑,而且完全兼容原有查询结构,不用调整整体生成规则。
内容的提问来源于stack exchange,提问作者talam
相关产品推荐
相关产品推荐

