Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Diviser le paramètre sql sur une virgule

Vous pouvez essayer quelque chose comme

--Split
DECLARE @textXML XML
DECLARE @data NVARCHAR(MAX), 
        @delimiter NVARCHAR(5)
        
SELECT  @data = 'Main Stream , Premium',
        @delimiter = ','
        
SELECT    @textXML = CAST('<d>' + REPLACE(@data, @delimiter, '</d><d>') + '</d>' AS XML)
SELECT  T.split.value('.', 'nvarchar(max)') AS data
FROM    @textXML.nodes('/d') T(split)

Vous pouvez soit stocker ceci dans une table temporaire, soit l'utiliser dans la clause IN.

Pour @Hoy commentaire

Vous pouvez regarder méthode nodes() (type de données xml)

Consultez également les méthodes de type de données xml

Vous pouvez ensuite l'utiliser comme

select * 
FROM    sales  
where   myCategory IN   (
                            SELECT  T.split.value('.', 'nvarchar(max)')
                            FROM    @textXML.nodes('/d') T(split)
                        )