Verwendung des Ergebnisses einer SQL-Select-Anweisung in der Funktion dbo.fnSplit als Eingabe

Ich muss eine durch Kommas getrennte Zeichenfolge (die ein Wert in einer Tabellenspalte ist) in der IN-Klausel einer SQL-Anweisung verwenden und verwenden Sie es in der 'IN'-Klausel einer SQL-Abfrage.

ALTER FUNCTION dbo.fnSplit(
@sInputList VARCHAR(8000) -- List of delimited items
 , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
 ) RETURNS @List TABLE (item VARCHAR(8000))

BEGIN
 DECLARE @sItem VARCHAR(8000)
 WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
  BEGIN
    SELECT
     @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX
      (@sDelimiter,@sInputList,0)-1))),  @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX
      (@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))

  IF LEN(@sItem) > 0
    INSERT INTO @List SELECT @sItem
  END

 IF LEN(@sInputList) > 0
     INSERT INTO @List SELECT @sInputList -- Put the last item in
     RETURN
  END
GO

select * from dbo.fnSplit('aaa,bbb,ccc', ',')

Die obige select-Anweisung ergibt folgendes Ergebnis:

Item
aaa
bbb
ccc

Jetzt muss ich meine SQL-Anweisung verwenden, die die Zeichenfolge aaa, bbb, ccc in der Funktion fnSplit wie folgt zurückgibt

  select * from dbo.fnSplit((SELECT Prefix2Include FROM dbo.vw_PrefixToInclude), ',')

Hinweis: SELECT Prefix2Include FROM dbo.vw_PrefixToInclude returns aaa,bbb,ccc

Aber das gibt mir einige Syntaxfehler wie folgt:

Msg 102, Level 15, State 1, Line 4
  Incorrect syntax near '('.
  Msg 102, Level 15, State 1, Line 4
  Incorrect syntax near ',

Bitte leite mich dabei.

Danke, Soumya

Antworten auf die Frage(1)

Ihre Antwort auf die Frage