Función Split en Sql Server 2008 R2

Espero les sea útil esta función.


USE [Quality]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[Split] 
( 
    @string NVARCHAR(MAX), 
    @delimiter CHAR(1) 
) 
RETURNS @output TABLE(splitdata NVARCHAR(MAX) 
) 
BEGIN 
    DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@string) + 1
       
        INSERT INTO @output (splitdata)  
        VALUES(SUBSTRING(@string, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(@delimiter, @string, @start)
        
    END 
    RETURN 
END

Modo de uso

En general la utilizo para en where in en caso de que me envien los datos separados por algún caracter delimitados ejemplo:

'AA-BB-CC-DD-EE'


SELECT * FROM tabla
WHERE codigo in (SELECT splitdata
                 FROM dbo.Split('AA-BB-CC-DD-EE', '-'));

Saludos

También te podría gustar...

6 Respuestas

  1. Deivis dice:

    Muchas gracias, me has salvado la vida.

  2. Jonathan Cruz dice:

    Excelente ayuda con la función. Gracias!

  3. Gracias, ha sido de mucha utilidad.

  4. AdnLpz dice:

    Excelente!

  5. Eloy dice:

    Gracias Eres los Máximo!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.