2012-03-31 40 views
0

我的表是这样的:如何查询sqlserver 2008中相同coulmn的多个值?

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

如果我通过“‘#class1的’”作为参数传递给SP只得到一个记录是第二record.But需要第一和第二记录,因为#1类包含两个1 ,2 rows.Please告诉我如何写这个。我现在使用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

如何在将字符串传入SP中时将%%添加到字符串?截至目前为止,我将字符串传递为“'#class1,#class2'”如何在sqlserver中添加%字符串..... – user1237131 2012-03-31 03:09:48

+0

我已经使用存储过程示例更新了我的答案。 – BluesRockAddict 2012-03-31 03:10:50

+0

获取TRIM不是一个可识别的函数名称错误.... – user1237131 2012-03-31 03:14:35

相关问题