在LIKE'%'中使用变量+ @variable会返回错误的结果

时间:2018-04-25 11:52:24

标签: sql-server sql-server-2014

我在MS SQL中有以下查询(简化):

DECLARE @Search nvarchar(4) = '883C'
SELECT DISTINCT
COUNT(DISTINCT [t].[column1])
FROM [dbo].[Table] [t]
WHERE
([t].[column1] LIKE '%' + @Search
 OR [t].[column2] LIKE '%' + @Search
 OR [t.].[column3] LIKE '%' + @Search
 )

如果我运行此查询,则计数为1,这是不正确的。

如果我将查询更改为:

SELECT DISTINCT
COUNT(DISTINCT [t].[column1])
FROM [dbo].[Table] [t]
WHERE
([t].[column1] LIKE '%' + '883C'
 OR [t].[column2] LIKE '%' + '883C'
 OR [t.].[column3] LIKE '%' + '883C'
 )

我得到3分,这是正确的。

有谁知道为什么会有区别? 如果需要,我可以提供一些样本数据。

1 个答案:

答案 0 :(得分:1)

结果是column1是nvarchar,column2是varchar,column3是char。

我认为达米恩走在正确的轨道上。