我知道这是一个非常基本的问题,我想我知道我想确认的answer...but。
这些查询真的等同吗?
SELECT * FROM FOO WHERE BAR LIKE 'X'
SELECT * FROM FOO WHERE BAR ='X'也许在没有外卡的情况下使用like会产生性能开销?
我有一款应用程序,可以随意使用,比如&通配符。SP目前做类似的,并附加外卡-我只是想更新查询使用相似,但有应用程序附加外卡的需要。
发布于 2008-12-31 23:07:18
正如@ocdecio所说,如果优化器足够聪明,就应该没有区别,但是如果您想要确定幕后发生了什么,您应该比较这两个查询的执行计划。
发布于 2016-06-13 11:18:51
马特·惠特菲尔德( 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 'https://stackoverflow.com/questions/404226
复制相似问题