Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Разделете sql параметър на запетая

Можете да опитате нещо като

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

Можете или да съхраните това във временна таблица, или да го използвате в клаузата IN.

За коментар @Hoy

Можете да разгледате метод nodes() (xml тип данни)

Освен това разгледайте xml методи за типове данни

След това можете да го използвате като

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. Променете ограничение CHECK в SQL Server с помощта на T-SQL

  2. Експортирайте данни от SQL Server в Excel и текстов файл чрез използване на пакет SSIS

  3. Linq-to-SQL игнорира стойността по подразбиране на SQL Server

  4. Избиране на N реда в SQL Server

  5. Опитвам се да създам съхранена процедура за създаване на потребител за вход и база данни?