0

我在表中有一个具有以下值的列。名称用逗号分隔..

   ProjID    Names
   1         Adam , Babita Tripathy, Alex, Mihir , Farhad
   2         SaravanaKumar, Shruthi, Arthi, Suneeth 

我将输入值传递给存储过程以获取值。输入值是多个名称。如果输入是(Arthi,SaravanaKumar)我需要将这两行都作为结果,因为 ProjID 1 和 2 具有输入名称之一。我怎样才能实现它。请帮忙..

搜索条件。

    IF @Names<>''  
      SET @condition = @condition+' ProdType.NamesLIKE'''+'%'+RTRIM(@Names)+'%'' AND' 
4

1 回答 1

1

您可以使用函数来拆分他输入的字符串

IF EXISTS(SELECT * FROM sysobjects WHERE ID = OBJECT_ID('UF_CSVToTable'))
 DROP FUNCTION UF_CSVToTable
GO

CREATE FUNCTION UF_CSVToTable
(
 @psCSString VARCHAR(8000)
)
RETURNS @otTemp TABLE(sID VARCHAR(MAX))
AS
BEGIN
 DECLARE @sTemp VARCHAR(10)
 DECLARE @tTemp VARCHAR(10)

 WHILE LEN(@psCSString) > 0
 BEGIN
  SET @sTemp = LEFT(@psCSString, ISNULL(NULLIF(CHARINDEX(',', @psCSString) - 1, -1),
                    LEN(@psCSString)))
  SET @psCSString = SUBSTRING(@psCSString,ISNULL(NULLIF(CHARINDEX(',', @psCSString), 0),
                               LEN(@psCSString)) + 1, LEN(@psCSString))
  INSERT INTO @otTemp(sID) VALUES (@sTemp)                   
 END

RETURN
END
Go

可以这样称呼。

select * from UF_CSVToTable('1,2,3,4,5,6,7,15,55,59,86')

SQL 小提琴演示

于 2013-09-29T09:08:36.303 回答