jav*_*y79 39 sql wildcard sql-like
我知道这是一个非常基本的问题,我想我知道答案......但我想证实.
这些查询真的相同吗?
SELECT * FROM FOO WHERE BAR LIKE 'X'
SELECT * FROM FOO WHERE BAR ='X'
Run Code Online (Sandbox Code Playgroud)
也许在使用没有外卡的情况下会有性能开销?
我有一个可选择使用LIKE和外卡的应用程序.SP目前做类似的并附加外卡 - 我想只是更新查询使用,但让应用程序根据需要附加外卡.
CMS*_*CMS 26
正如@ocdecio所说,如果优化器足够智能,那么应该没有区别,但是如果你想确定幕后发生的事情,你应该比较两个查询的执行计划.
CSh*_*pie 13
Matt Whitfield的原始答案来自这里
=
和之间有区别LIKE
.使用时执行字符串比较时LIKE
,模式字符串中的所有字符都很重要.这包括前导或尾随空格.
所以,如果你有一列,它是char
或nchar
,而不是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 '
Run Code Online (Sandbox Code Playgroud)