问题真的说明了一切...我已经能够使用这两个,但不能告诉有什么区别。使用pg_trgm模块...
SELECT * from tbl WHERE postcode % 'w4%' LIMIT 10; SELECT * from tbl WHERE postcode ILIKE 'w4%' LIMIT 10;
zdwk9cvp1#
ILIKE和%运算符是完全不同的。%是pg_trgm使用的相似度算子,其输出取决于设置的相似度阈值。
ILIKE
%
pg_trgm
set pg_trgm.similarity_threshold = .6; select 'abcdef' % 'abZZef'; --> false set pg_trgm.similarity_threshold = .1; select 'abcdef' % 'abZZef'; --> true
另一方面,Ilike查找(部分)字符串相等
Ilike
select 'abcdef' ilike 'abc%'; --> true select 'abcdef' ilike 'abZ%'; --> false
1条答案
按热度按时间zdwk9cvp1#
ILIKE
和%
运算符是完全不同的。%
是pg_trgm
使用的相似度算子,其输出取决于设置的相似度阈值。另一方面,
Ilike
查找(部分)字符串相等