gue*_*rda 155 sql comparison
如果您应该使用LIKE或'='来比较SQL语句中的字符串,那就是(几乎是宗教的)讨论.
sou*_*rge 182
LIKE
并且相等运算符具有不同的目的,它们不会做同样的事情:
=
更快,而LIKE
可以解释通配符.=
尽可能在任何地方使用LIKE
.
SELECT * FROM user WHERE login LIKE 'Test%';
Run Code Online (Sandbox Code Playgroud)
样本匹配:
TestUser1
TestUser2
TestU
测试
Tec*_*ddy 120
要查看性能差异,请尝试以下操作:
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name = B.name
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name LIKE B.name
Run Code Online (Sandbox Code Playgroud)
将字符串与'='进行比较要快得多.
Cei*_*ish 14
Postgres为字符串匹配提供了一些其他技巧(如果这恰好是您的数据库):
ILIKE,这是一个不区分大小写的LIKE匹配:
select * from people where name ilike 'JOHN'
Run Code Online (Sandbox Code Playgroud)
火柴:
如果你想变得疯狂,你可以使用正则表达式:
select * from people where name ~ 'John.*'
Run Code Online (Sandbox Code Playgroud)
火柴:
小智 9
就像抬头一样,'='运算符将在Transact-SQL中用空格填充字符串.所以'abc' = 'abc '
会回归真实; 'abc' LIKE 'abc '
将返回false.在大多数情况下,'='将是正确的,但在我最近的一个案例中,它不是.
因此,虽然'='更快,但LIKE可能会更明确地表明您的意图.
http://support.microsoft.com/kb/316626
LIKE
用于模式匹配,=
用于相等性测试(由COLLATION
使用中定义).
=
可以使用索引,而LIKE
查询通常需要测试结果集中的每个记录来过滤它(除非您使用全文搜索),因此=
具有更好的性能.