2012-07-11 55 views
0

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

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

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

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

我该如何使用IN和LIKE? 谢谢。

+1

你肯定有满足'IN'的条件的记录? – Taryn 2012-07-11 12:06:01

+1

那么......表格*是否有*就像您的搜索条款*和*点号是2或3? – 2012-07-11 12:06:15

+0

@RemusRusanu是的。 – 2012-07-11 12:12:44

回答

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

+0

我使用** 2,3 **,但没有数据返回。 – 2012-07-11 12:11:16

+0

那么它一定是一个数据问题。必须有一个符合这两个标准的记录,同时 – Randy 2012-07-11 12:16:01

+0

的代码是正确的。问题来自janus检查组合框。谢谢。 – 2012-07-11 12:17:59