【发布时间】:2012-04-01 06:48:28
【问题描述】:
如何为以下请求编写查询? 我的桌子:
id designation
1 developer,tester,projectlead
1 developer
1 techlead
if id=1,designation="'developer'"
然后需要第一,第二条记录。因为 2 行有 venkat。
如果id=1,designation="'developer','techlead'" 则需要获得 3 条记录作为结果。
我编写了一项用于向该表插入记录的服务。因此,我维护一个表来存储具有逗号的同一列的所有指定。
如果用户通过 id=1 designation="'developer','techlead'" 使用服务,则需要提取上述 3 条记录。这样我只维护一个表来保存所有名称
SP:
ALTER PROCEDURE [dbo].[usp_GetDevices]
@id INT,
@designation NVARCHAR (MAX)
AS
BEGIN
declare @idsplat varchar(MAX)
set @idsplat = @UserIds
create table #u1 (id1 varchar(MAX))
set @idsplat = 'insert #u1 select ' + replace(@idsplat, ',', ' union select ')
exec(@idsplat)
Select
id FROM dbo.DevicesList WHERE id=@id AND designation IN (select id1 from #u1)
END
【问题讨论】:
标签: sql-server-2008 stored-procedures