Postgresql(9.6)选择包含ILIKE ALL但不包括某些单词的记录
问题描述:
我需要在我的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,但并不排除包含毕加索或盛大的记录
谢谢
答
在第二个条件中将ANY更改为ALL。 像这样:
SELECT * FROM cars.cars
WHERE slug ILIKE ALL (array['%citroen%','%c4%'])
AND slug NOT ILIKE ALL (array['%picasso%','%grand%'])
好的,谢谢,它工作得很好,但是ANY和ALL之间有什么区别呢? –
认为不是所有=任何而不是任何=全部。 – ninjarails
谢谢,这清理了我的想法很多。 –