Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Podziel parametr sql na przecinek

Możesz spróbować czegoś takiego jak

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

Możesz przechowywać to w tabeli tymczasowej lub użyć w klauzuli IN.

Za komentarz @Hoy

Możesz spojrzeć na metoda nodes() (typ danych XML)

Zobacz także Metody typu danych XML

Możesz go wtedy użyć jako

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wersja zaplecza nie jest obsługiwana do projektowania diagramów lub tabel bazy danych

  2. Różnica między konwersjami daty i godziny w MSExcel i SQL Server

  3. Wstaw do tabeli temp w CTE

  4. Zrozumienie blokady SQL Server w bezpiecznym środowisku bazy danych

  5. Przykłady zapytań w relacji wiele do wielu