2015/05/16

SQL Server - Convertir o separar por comas una cadena dividido en filas

La siguiente función convierte y separa comas una cadena dividido en filas.
DECLARE @nombre_db AS VARCHAR(50) 
CREATE FUNCTION fn_SplitString
(
 @Str           NVARCHAR(MAX),
 @Separator     CHAR(1)
)
RETURNS @ResultOutput TABLE(Id INT IDENTITY(1, 1), Result NVARCHAR(100))
AS
BEGIN
 DECLARE @Splitted_string NVARCHAR(4000)
 DECLARE @Pos INT
 DECLARE @NextPos INT
 
 SET @Str = @Str + @Separator
 SET @Pos = CHARINDEX(@Separator, @Str)
 WHILE (@pos <> 0)
 BEGIN
     SET @Splitted_string = SUBSTRING(@Str, 1, @Pos - 1)
     SET @Str = SUBSTRING(@Str, @pos + 1, LEN(@Str))
     SET @pos = CHARINDEX(@Separator, @Str)
     INSERT INTO @ResultOutput
     VALUES
       (
         @Splitted_string
       )
 END
 RETURN
END
Utilizando la función fn_SplitString en consulta:
--Separar una cadena por comas
SELECT Result
FROM   fn_SplitString('Split,string,example,in,sql,server', ',')

--Separar una cadena por símbolo de canalización
SELECT Result
FROM   fn_SplitString('Split|string|example|in|sql|server', '|')

--Separar una cadena por el espacio
SELECT Result
FROM   fn_SplitString('Split string example in sql server', ' ')

1 comentario: