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

Równoważnik funkcji Split w T-SQL?

Wypróbuj to

DECLARE @xml xml, @str varchar(100), @delimiter varchar(10)
SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'
SET @delimiter = ','
SET @xml = cast(('<X>'+replace(@str, @delimiter, '</X><X>')+'</X>') as xml)
SELECT C.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as X(C)

LUB

DECLARE @str varchar(100), @delimiter varchar(10)
SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'
SET @delimiter = ','
;WITH cte AS
(
    SELECT 0 a, 1 b
    UNION ALL
    SELECT b, CHARINDEX(@delimiter, @str, b) + LEN(@delimiter)
    FROM CTE
    WHERE b > a
)
SELECT SUBSTRING(@str, a,
CASE WHEN b > LEN(@delimiter) 
    THEN b - a - LEN(@delimiter) 
    ELSE LEN(@str) - a + 1 END) value      
FROM cte WHERE a > 0

Wiele innych sposobów na zrobienie tego samego jest tutaj. Jak podzielić ciąg oddzielony przecinkami?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Typowe błędy DBA w MS SQL Server

  2. Jak wstawić ciąg do innego ciągu w SQL Server za pomocą STUFF()

  3. Jak dokumentować bazę danych SQL Server

  4. Niestandardowe ciągi formatu daty/godziny obsługiwane przez FORMAT() w SQL Server

  5. Użyj OBJECTPROPERTY(), aby określić, czy obiekt jest widokiem w SQL Server