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

Еквивалентна функция на разделяне в T-SQL?

Опитайте това

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)

ИЛИ

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

Много повече начини да направите същото е тук Как да разделите низ, разделен със запетая?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете ограниченията на външния ключ в базата данни на SQL Server за всички таблици - SQL Server / TSQL урок, част 72

  2. SQL Server Group по брой дата и час на час?

  3. Получаване на разрешение за изпълнение на xp_cmdshell

  4. Как да получа последно въведен идентификатор?

  5. Как да намерите таблици, които съдържат конкретна колона в SQL Server