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
Publicaciones Populares
Categorías
- ASP.Net (6)
- C# (10)
- CSS (5)
- DIY (1)
- General (5)
- JavaScript (8)
- JQuery (6)
- Kodi (antes XBMC) (4)
- Nuevo (3)
- Raspberry Pi (2)
- SQL Server (15)
- Uncategorized (1)
- Vue.js (2)
- Wordpress (1)
Muchas gracias por tu publicación, me sirvió de mucho.
Ya me inscribí para recibir tus nuevas publicaciones.
Saludos!