sql >> Databáze >  >> RDS >> Sqlserver

Rozdělit sql parametr na čárku

Můžete zkusit něco jako

--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)

Můžete to buď uložit do dočasné tabulky, nebo to použít v klauzuli IN.

Za komentář @Hoy

Můžete se podívat na metodu nodes() (xml datový typ)

Podívejte se také na xml metody datových typů

Poté jej můžete použít jako

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


  1. připojit se vyhledáváním a skupinovým bytím

  2. Operátor MySQL - BETWEEN s FLOAT(10,6) se chová jako> a <, místo>=a <=

  3. Jak automaticky odstranit záznamy na serveru SQL po určité době

  4. Návratová hodnota uložených funkcí v MyDAC