我有一个返回 4 列和 45 行的 SQL 查询。
Select ComplaintID, ProblemStreet, ProblemCrossStreet,ProblemSubdivision
From Complaints
where ProblemCrossStreet Like '%PARK MANOR%' OR ProblemStreet Like '%PARK
MANOR%' Or ProblemSubdivision Like '%PARK MANOR%'
此查询返回 4 列和 31 行:
DECLARE @a as varchar(Max) = 'PARK MANOR'
Select ComplaintID, ProblemStreet, ProblemCrossStreet,ProblemSubdivision
From Complaints
where ProblemCrossStreet Like @a OR ProblemStreet Like @a Or
ProblemSubdivision Like @a
这个查询是我需要返回的,它应该是 2 列和 45 行
DECLARE @a as varchar(Max) = 'PARK MANOR'
Select ComplaintID,ProblemCrossStreet From Complaints Where
ProblemCrossStreet like @a
Union ALL
Select ComplaintID,ProblemStreet from Complaints Where ProblemStreet Like @a
Union ALL
Select ComplaintID, ProblemSubdivision From Complaints where
ProblemSubdivision like @a
最后一个查询怎么只返回 34 行?为什么这 3 个看起来相同的查询不返回相同的值,最重要的是我如何让我的第三个查询返回这 2 列和 45 行?
最佳答案
用 % 声明你的变量。
DECLARE @a as varchar(Max) = '%PARK MANOR%'
或者更新您的查询以添加 %
where ProblemCrossStreet Like CONCAT('%', @a, '%') OR ProblemStreet Like CONCAT('%', @a, '%') Or
ProblemSubdivision Like CONCAT('%', @a, '%')
关于mysql - 为什么这 3 个查询没有返回正确的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52371441/