Sql server 2008 如何在SQLServer2008中动态编写查询?

Sql server 2008 如何在SQLServer2008中动态编写查询?,sql-server-2008,Sql Server 2008,如何动态地编写下面的查询 桌子 条件: IF empid = 1 AND (designation LIKE '%developer%' OR designationLIKE '%techlead%') OR (interests LIKE '%cricket%'). 如果指定需要发送2个以上的数据,以及相同的兴趣,如何动态编写上述查询 请告诉我 编辑存储过程代码: ALTER PROCEDURE [dbo].[usp_GetDevices] @id INT, @desig

如何动态地编写下面的查询

桌子

条件:

IF empid = 1
AND (designation LIKE '%developer%' OR designationLIKE '%techlead%') 
OR (interests LIKE '%cricket%').
如果指定需要发送2个以上的数据,以及相同的兴趣,如何动态编写上述查询

请告诉我

编辑存储过程代码:

 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。然后使用以下方法之一将其解析到表中:


一旦在表中有了值,就可以执行任何标准的联接或查询操作。

然后在提交表单时,如果您有一对多关系,那么创建一个指定字符串实际上应该是一个外键列表,并将其传递给SQL。然后使用以下方法之一将其解析到表中:


一旦在表中有了这些值,您就可以执行任何标准的联接或查询操作。

请把问题说清楚。是否要编写动态SQL?我在UI中放置了所有名称(如复选框)。用户动态选择要查询的名称(如开发人员、测试人员、projectlead、techlead)的编号。如何查询以从DB获取相关记录…请让您的问题更清楚。是否要编写动态SQL?我在UI中放置了所有名称,如复选框。用户选择编号,如developer、tester、projectlead、,techlead动态地来查询。如何查询以从DB获取相关记录…Hi@Terry谢谢。但我得到的是精确匹配的记录。例如,如果我发送id=1且designation='developer'仅获取第二条记录。但第一条记录和开发人员指定都是错误的。通过使用like获取所有开发人员记录,但我无法发送多条记录id=1、名称=“%developer%”、“%tester%”、“%techlead%”等参数在子查询返回多个值时出错。当子查询在=、!=、=或者当子查询用作表达式时..请检查我的SP..Hi@Terry谢谢。但我得到的是精确匹配的记录。例如,如果我发送id=1,designation='developer'只得到第二条记录。但是第一条记录也得到开发人员指定,这是错误的。通过使用like获取所有开发人员记录,但我无法发送多个参数likeid=1,名称=“%developer%”、“%tester%”、“%techlead%”在子查询返回多个值时出错。当子查询在=、!=、=或者当子查询用作表达式时..请检查我的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
-- @designations = 'developer,tester,techlead'

select text_val 
from dbo.fn_ParseText2Table(@designations,',')

/* results:

text_val 
--------
developer
tester
techlead

*/