我在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分,这是正确的。
有谁知道为什么会有区别? 如果需要,我可以提供一些样本数据。
答案 0 :(得分:1)
结果是column1是nvarchar,column2是varchar,column3是char。
我认为达米恩走在正确的轨道上。