2012-07-11 56 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