En los lenguajes de programación es muy sencillo dividir un string de acuerdo a un carácter. Por ejemplo, en C# dividir un string de acuerdo al carácter “;” es tan sencillo como escribir “uno;dos”.Split(‘;’);. Pero, ¿qué pasa cuando tenemos que hacer ese mismo ejercicio en Transact-SQL o algún otro tipo de query que lo requiera? Para esos casos podemos utilizar la función a continuación. La misma requiere dos parámetros. El primero indica el string que se va a estar dividiendo y el segundo indica el carácter por el cual se va a dividir. El resultado que nos devuelve es de tipo tabla de una columna con los valores que han sido divididos. Veamos el código.
CREATE FUNCTION [dbo].[Split] (@String nvarchar (4000), @Delimitador nvarchar (10))
returns @ValueTable table ([Value] nvarchar(4000))
begin
declare @NextString nvarchar(4000)
declare @Pos int
declare @NextPos int
declare @CommaCheck nvarchar(1)
--Inicializa
set @NextString = ''
set @CommaCheck = right(@String,1)
set @String = @String + @Delimitador
--Busca la posición del primer delimitador
set @Pos = charindex(@Delimitador,@String)
set @NextPos = 1
--Itera mientras exista un delimitador en el string
while (@pos <> 0)
begin
set @NextString = substring(@String,1,@Pos - 1)
insert into @ValueTable ( [Value]) Values (@NextString)
set @String = substring(@String,@pos +1,len(@String))
set @NextPos = @Pos
set @pos = charindex(@Delimitador,@String)
end
return
end
Un ejemplo de como utilizarla es:
SELECT Value
FROM dbo.Split('Juan,Pedro,Julio,José', ',')
--Resultado
---------
--|Value|
--|-----|
--|Juan |
--|Pedro|
--|Julio|
--|José |
---------
-- También puede ser usado como subquery
SELECT *
FROM TABLA1
WHERE TABLA1.NOMBRE IN (SELECT Value FROM dbo.Split('Juan,Pedro,Julio,José', ','))
Espero que esta función les sirva.
Roberto Torres Rodríguez
Roberto Torres Rodriguez es el fundador y CEO de Softech Corporation. Él es un programador con más de 10 años de experiencia. Actualmente el se encuentra desarrollando soluciones para sus clientes basadas en la tecnología web y móvil, pero también, creando soluciones innovadoras utilizando estrategias como inteligencia artificial y "machine learning".
Related posts
1 Comment
Deja una respuesta Cancelar la respuesta
Categorías
- ASP.Net (6)
- C# (10)
- CMS (1)
- CSS (5)
- Design (1)
- DIY (1)
- General (5)
- IA (1)
- JavaScript (9)
- JQuery (6)
- Kodi (antes XBMC) (4)
- Nuevo (3)
- Raspberry Pi (2)
- SQL Server (15)
- Teclados (1)
- Uncategorized (1)
- Vue.js (3)
- Wordpress (1)

Muchas gracias por tu publicación, me sirvió de mucho.
Ya me inscribí para recibir tus nuevas publicaciones.
Saludos!