22 feb. 2013

Cómo hacer un split en Transact SQL

Crear función Split en Transact SQL

Como muchos ya sabréis, Transact SQL no tiene una función nativa que realice el split de una cadena de texto, por este motivo el usuario es el que tiene que ingeniárselas y crearse una función que realice el tan deseado split.

¿Qué es un Split?

Un Split nos permite dividir una cadena de texto en varias subcadenas, por defecto split divide la cadena de texto original cada vez que encuentra un espacio en blanco. Nosotros especificaremos en nuestro ejemplo qué delimitador utilizaremos para la creación de las subcadenas.

Ejemplo de Split en Transact SQL

En el ejemplo vamos a dividir la cadena de texto @String cuyo contenido es 'SQL,TUTORIALES', especificaremos que el delimitador sea la coma y el resultado debe ser la creación de dos subcadenas 'SQL' y 'TUTORIALES'.

DECLARE @NextString NVARCHAR(40)
DECLARE @Pos INT
DECLARE @NextPos INT
DECLARE @String NVARCHAR(40)
DECLARE @Delimiter NVARCHAR(40)

SET @String ='SQL,TUTORIALES'
SET @Delimiter = ','
SET @String = @String + @Delimiter
SET @Pos = charindex(@Delimiter,@String)

WHILE (@pos <> 0)
BEGIN
SET @NextString = substring(@String,1,@Pos - 1)
SELECT @NextString -- Show Results
SET @String = substring(@String,@pos+1,len(@String))
SET @pos = charindex(@Delimiter,@String)
END

El código de arriba dará como resultado:
- SQL
- TUTORIALES