在T-SQL中使用IN子句和Like

问题描述 投票:0回答:2

我想通过IN子句和LIKE在sql express中选择一些数据但是没有返回行。我的代码在这里:

SELECT        PointId, PointTitleId, PointTitleName, PointTitleContentText
FROM          PointsTitlesData
WHERE        (PointTitleContentText LIKE '%' + @SearchingClause + '%') 
             AND (PointId IN ('2','3'))

上面的代码不返回任何数据,但当我只使用LIKE代码返回数据。

SELECT        PointId, PointTitleId, PointTitleName, PointTitleContentText
FROM          PointsTitlesData
WHERE        (PointTitleContentText LIKE '%' + @SearchingClause + '%')

我怎么能同时使用IN和LIKE?谢谢。

tsql sql-like
2个回答
1
投票

我尝试使用下面的脚本重新创建您的场景

Declare @SearchingClause nvarchar(20);

Create table PointsTitlesData (Pointid int, PointTitleContentText nvarchar(20));

insert into PointsTitlesData (Pointid, PointTitleContentText)
values ( 1, 'aaamypoint1aaa'), (2, 'bbbmypoint2bbb'),(3,'cccmypoint3ccc');

Set @SearchingClause = 'mypoint2';

SELECT        PointId, PointTitleContentText 
FROM          PointsTitlesData 
WHERE        (PointTitleContentText LIKE '%' + @SearchingClause + '%')  
         AND (PointId IN ('2','3')) 

-- above code don't return any data but when i use only LIKE code return data.

SELECT        PointId, PointTitleContentText 
FROM          PointsTitlesData 
WHERE        (PointTitleContentText LIKE '%' + @SearchingClause + '%') 

我得到了两个查询的结果,所以看起来你有数据问题。你有没有尝试过

SELECT PointId from PointsTitlesData where ((PointId = 2) or (PointId = 3))

检查数据是否存在。

关心裘德


0
投票

可能会删除报价:

'2','3'应为2,3

© www.soinside.com 2019 - 2024. All rights reserved.