在PostgreSQL中field_name not like any和not(field_name like any)有什么区别

ifmq2ha2  于 12个月前  发布在  PostgreSQL
关注(0)|答案(2)|浏览(161)

这两个查询在postgresql中给出不同的结果

  1. not (field_name like any(array['a','b'])给出的值不是预期的a或B
    1.而field_name not like any(array['a','b'])同时检查a和b值,
    我基本上想获取没有a或b的记录。我看了postgres的文档没有发现任何结果
fnx2tebb

fnx2tebb1#

我不知道你在问什么,因为你已经知道这两个查询之间的区别了。第一个查询是检查不等于“a”或“B”的值,这是您想要的。
第二个查询是检查“field_name”是否出现模式“a”或“B”,它将不会返回记录。换句话说,它将只返回没有匹配模式的记录,即没有'a'或'b'。

oewdyzsn

oewdyzsn2#

第二个问题没有意义:
field_name not like any(array['a','b'])
field_name not like 'a' OR field_name not like 'b',所以除了null之外,它总是truefieldname不能同时是ab)。
如果您想重写第一个查询,则必须使用ALL
field_name not like ALL(array['a','b']),与
field_name not like 'a' AND field_name not like 'b'

相关问题