2017-10-10 286 views
0

我需要在我的postgresql数据库的汽车表上搜索某些关键字的所有关键字,但排除其他一些关键工作...例如...我需要找到所有汽车至极含有“C4”和“雪铁龙”上的金属块,但至极不包含单词“毕加索”或“盛大”Postgresql(9.6)选择包含ILIKE ALL但不包括某些单词的记录

我尝试下面的代码,但没有工作:

SELECT * FROM cars.cars 
WHERE slug ILIKE ALL (array['%citroen%','%c4%']) 
AND slug NOT ILIKE ANY (array['%picasso%','%grand%']) 

它只发现至少包含雪铁龙和c4,但并不排除包含毕加索或盛大的记录

谢谢

回答

1

在第二个条件中将ANY更改为ALL。 像这样:

SELECT * FROM cars.cars 
WHERE slug ILIKE ALL (array['%citroen%','%c4%']) 
AND slug NOT ILIKE ALL (array['%picasso%','%grand%']) 
+0

好的,谢谢,它工作得很好,但是ANY和ALL之间有什么区别呢? –

+1

认为不是所有=任何而不是任何=全部。 – ninjarails

+0

谢谢,这清理了我的想法很多。 –

相关问题