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

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


当前回答

在我的小经验中:

“=”表示精确匹配。

“LIKE”表示部分匹配。

其他回答

LIKE和相等运算符有不同的目的,它们做的事情不一样: =更快,而LIKE可以解释通配符。在你能使用的地方使用=,在你必须使用的地方使用LIKE。

SELECT * FROM user WHERE login LIKE 'Test%';

样本匹配:

测试用户1 测试用户2 测试U 测试

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

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

在我的小经验中:

“=”表示精确匹配。

“LIKE”表示部分匹配。

要查看性能差异,请尝试以下方法:

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

用'='比较字符串要快得多。

即使性能较慢,也要使用“like”的另一个原因是:字符值在比较时会隐式转换为整数,因此:

@transid varchar(15)

如果@transid != 0

将会给出一个“The conversion of The varchar value '123456789012345' overflow an int column”错误。