当使用SQL时,在WHERE子句中使用=而不是LIKE有任何好处吗?
没有任何特殊的运算符,LIKE和=是一样的,对吧?
当使用SQL时,在WHERE子句中使用=而不是LIKE有任何好处吗?
没有任何特殊的运算符,LIKE和=是一样的,对吧?
当前回答
取决于数据库系统。
通常没有特殊字符,是的,=和LIKE是一样的。
但是,某些数据库系统可能会对不同的操作符使用不同的排序设置。
例如,在MySQL中,字符串上的=默认情况下总是不区分大小写的,所以没有特殊字符的LIKE是一样的。在其他一些RDBMS上,LIKE是不区分大小写的,而=则不是。
其他回答
LIKE关键字无疑带有“性能价签”。也就是说,如果您的输入字段可能包含要在查询中使用的通配符,那么我建议仅在输入包含其中一个通配符时使用LIKE。否则,使用标准等于比较。
最好的祝福……
对于这个例子,我们理所当然地认为varcharcol不包含“并且在这一列上没有空单元格
select * from some_table where varcharCol = ''
select * from some_table where varcharCol like ''
第一个结果是0行输出,而第二个显示整个列表。=是严格匹配的情况下,而like的作用像一个过滤器。如果过滤器没有条件,则每个数据都是有效的。
Like -由于其目的,它的工作速度稍慢,用于varchar和类似的数据。
=比LIKE快得多。
在有11GB数据和超过1000万条记录的MySQL上测试,f_time列被索引了。
SELECT * FROM XXXXX WHERE f_time = '1621442261' -花费0.00s并返回330条记录
SELECT * FROM XXXXX WHERE f_time like '1621442261' -花费44.71秒并返回330条记录
在Oracle中,不带通配符的“like”将返回与“equals”相同的结果,但可能需要额外的处理。根据Tom Kyte的说法,Oracle在使用文字时将不带通配符的“like”视为“equals”,但在使用绑定变量时则不会。
实际上,这取决于您希望查询做什么。如果你的意思是精确匹配,那么使用=。如果你的意思是一个模糊匹配,那么使用LIKE。对代码来说,表达自己的意思通常是一个很好的策略。