当前位置:  开发笔记 > 编程语言 > 正文

SQL LIKE没有与'='相同的通配符?

如何解决《SQLLIKE没有与'='相同的通配符?》经验,为你挑选了3个好方法。

我知道这是一个非常基本的问题,我我知道答案......但我想证实.

这些查询真的相同吗?

SELECT * FROM FOO WHERE BAR LIKE 'X'
SELECT * FROM FOO WHERE BAR ='X'

也许在使用没有外卡的情况下会有性能开销?

我有一个可选择使用LIKE和外卡的应用程序.SP目前做类似的并附加外卡 - 我想只是更新查询使用,但让应用程序根据需要附加外卡.



1> CMS..:

正如@ocdecio所说,如果优化器足够智能,那么应该没有区别,但是如果你想确定幕后发生的事情,你应该比较两个查询的执行计划.



2> CSharpie..:

Matt Whitfield的原始答案来自这里

=和之间有区别LIKE.使用时执行字符串比较时LIKE,模式字符串中的所有字符都很重要.这包括前导或尾随空格.

所以,如果你有一列,它是charnchar,而不是nvarchar或者varchar,会有不同的结果,由于尾随空格.

重现此行为的小示例:

CREATE TABLE #temp (nam [varchar](MAX))
INSERT INTO [#temp] ([nam])
VALUES ('hello')
INSERT INTO [#temp] ([nam])
VALUES ('hello  ')

SELECT * FROM #temp WHERE [nam] = 'hello  '

SELECT * FROM #temp WHERE [nam] LIKE 'hello  '



3> Otávio Décio..:

任何好的优化器都会将第一个表达式减少到第二个表达式.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有