lunes, 17 de febrero de 2020

SplitAndGet - SQL Server

La siguiente funcion para SQL Server divide un string mediante un separador, y devuelve el item n del supuesto array (supuesto porque SQL no soporta arrays)


ALTER FUNCTION dbo.SplitAndGet (@pString NVARCHAR(MAX), @pDelimiter CHAR(1), @pIndex INT)
RETURNS NVARCHAR(MAX)
AS
BEGIN 
 DECLARE @start INT, @end INT, @ret NVARCHAR(MAX), @idx INT
 SET @start = 1
 SET @end = CHARINDEX(@pDelimiter, @pString)
 SET @idx = 0
 WHILE @start < LEN(@pString) + 1
 BEGIN 
  IF @end = 0  
   SET @end = LEN(@pString) + 1
       
  IF @idx = @pIndex
  BEGIN
   SET @ret = SUBSTRING(@pString, @start, @end - @start)
   BREAK
  END
  SET @start = @end + 1 
  SET @end = CHARINDEX(@pDelimiter, @pString, @start)
  SET @idx = @idx + 1
 END 
 RETURN @ret
END

GO

SELECT dbo.SplitAndGet('item0/item1/item2/item3', '/', 2)

No hay comentarios:

Publicar un comentario