2012-03-31 6 views
0
このような

MY表:sqlserver 2008で同じcoulmnの複数の値をクエリする方法は?

id Tag    platform 
1 #class1,#class2  CS 
2 #class1    PS 
3 #class2    CS 

私は#のclass1には、両方の1に含まれているため、第二record.Butは、第一および第二の記録に必要されて1つのレコードのみを取得してSPにパラメータとして「『#のクラス1』」を渡した場合これを書く方法を教えてください。私は今のところIN文を使用しています。記録だけを使って。

MY SP:

ALTER PROCEDURE [dbo].[usp_Get]-- 1,"'#class1,#class2'" 
@Appid INT, 
@TagList NVARCHAR (MAX) 
AS 

BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
SET NOCOUNT ON; 
SELECT @TagList = '%' + RTRIM(LTRIM(@TagList)) + '%'; 
    declare @tags varchar(MAX) 
    set @tags = @TagList 
    create table #t (tag varchar(MAX)) 
    set @tags = 'insert #t select ' + replace(@tags, ',', ' union select ') 
    exec(@tags) 
Select 
    id FROM dbo.List WHERE (([email protected])) AND ((Tags LIKE(select tag from #t) 
END 

変更する方法を教えてください...事前に

おかげ..

答えて

1

一つの解決策は、あなたのストアドプロシージャでLIKE演算子を使用することです:

CREATE PROCEDURE FindTag @TagName char(50) 
AS 
    SELECT @TagName = '%' + TRIM(@TagName) + '%'; 

    SELECT Tag 
    FROM MyTable 
    WHERE Tag LIKE @TagName; 

GO 
+0

どのように文字列を "#class1、#class2 '"のように渡していますか?どのようにsqlserverでその文字列に%を追加する..... – user1237131

+0

私はストアドプロシージャの例で私の答えを更新しました。 – BluesRockAddict

+0

TRIMを取得することは認識された関数名エラーではありません.... – user1237131

関連する問題