2017-02-10 51 views
0

让我们说我想查找包含匹配的行。例如:在Postgres中返回否定匹配

select * from tableName where tableName.colName like '%abc%' limit 5;

这是要给我包含列colName内子abc表中的tableName行。现在,如何获得列colName所在的行行数而不是包含字符串abc。 Postgres中是否有某种否定运算符?

+6

'选择表名*其中tableName.colName不喜欢 '%ABC%' 的限制5;'.. –

+0

https://www.postgresql.org/docs/current /static/functions-logical.html –

回答

2

使用not like

select * from tableName where tableName.colName not like '%abc%' limit 5; 
+0

根据OP的需求,您可能还想包含'或colname不为空' – Hambone

+0

@Hambone您能解释一下您的想法吗?如果该列为NULL,那么当前的检查将失败,这对我来说很有意义。 –

+0

我认为如果你说field!='value'那么null就不会返回。空值不是“值” - 它不是什么。我相信'不在'和'不喜欢'也是如此。我完全可能是错误的,但我确信我一直在使用'!='或'not in'期待空位回来,但他们没有。 – Hambone