在SQL语句中,是否应该使用LIKE或'='来比较字符串,这是一个(几乎是宗教式的)讨论。

有使用LIKE的理由吗? 有使用'='的理由吗? 性能?可读性呢?


当前回答

LIKE用于模式匹配,=用于相等性测试(由使用中的COLLATION定义)。

=可以使用索引,而LIKE查询通常需要测试结果集中的每一条记录以过滤掉它(除非您使用全文搜索),因此=具有更好的性能。

其他回答

Postgres提供了一些其他的字符串匹配技巧(如果它恰好是你的DB):

ILIKE是一个不区分大小写的LIKE匹配:

select * from people where name ilike 'JOHN'

匹配:

约翰 约翰 约翰

如果你真的很生气,你可以使用正则表达式:

select * from people where name ~ 'John.*'

匹配:

约翰 Johnathon 约翰尼

LIKE用于模式匹配,=用于相等性测试(由使用中的COLLATION定义)。

=可以使用索引,而LIKE查询通常需要测试结果集中的每一条记录以过滤掉它(除非您使用全文搜索),因此=具有更好的性能。

LIKE在shell中匹配像通配符char [*, ?] LIKE '%suffix' -给我所有以后缀结尾的东西。你不能用= 这要看具体情况了。

在我的小经验中:

“=”表示精确匹配。

“LIKE”表示部分匹配。

对于模式匹配使用LIKE。对于精确匹配=。