这两个查询在postgresql中给出不同的结果
not (field_name like any(array['a','b'])
给出的值不是预期的a或B
1.而field_name not like any(array['a','b'])
同时检查a和b值,
我基本上想获取没有a或b的记录。我看了postgres的文档没有发现任何结果
这两个查询在postgresql中给出不同的结果
not (field_name like any(array['a','b'])
给出的值不是预期的a或Bfield_name not like any(array['a','b'])
同时检查a和b值,
2条答案
按热度按时间fnx2tebb1#
我不知道你在问什么,因为你已经知道这两个查询之间的区别了。第一个查询是检查不等于“a”或“B”的值,这是您想要的。
第二个查询是检查“field_name”是否出现模式“a”或“B”,它将不会返回记录。换句话说,它将只返回没有匹配模式的记录,即没有'a'或'b'。
oewdyzsn2#
第二个问题没有意义:
field_name not like any(array['a','b'])
与field_name not like 'a' OR field_name not like 'b'
,所以除了null
之外,它总是true
(fieldname
不能同时是a
和b
)。如果您想重写第一个查询,则必须使用
ALL
field_name not like ALL(array['a','b'])
,与field_name not like 'a' AND field_name not like 'b'