Escribí una Función de valor de tabla en Microsoft SQL Server 2008 para tomar una columna delimitada por comas en una base de datos para escupir filas separadas para cada valor.
Ej: "uno, dos, tres, cuatro" devolvería una nueva tabla con solo una columna que contiene los siguientes valores:
one
two
three
four
¿Este código parece propenso a errores para ustedes? Cuando lo pruebo con
SELECT * FROM utvf_Split('one,two,three,four',',')
simplemente funciona para siempre y nunca devuelve nada. Esto se está volviendo realmente desalentador, especialmente porque no hay funciones divididas integradas en el servidor MSSQL (¡¿POR QUÉ POR QUÉ ?!) y todas las funciones similares que he encontrado en la web son basura absoluta o simplemente irrelevantes para lo que estoy tratando de hacer .
Aquí está la función:
USE *myDBname*
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[utvf_SPlit] (@String VARCHAR(MAX), @delimiter CHAR)
RETURNS @SplitValues TABLE
(
Asset_ID VARCHAR(MAX) NOT NULL
)
AS
BEGIN
DECLARE @FoundIndex INT
DECLARE @ReturnValue VARCHAR(MAX)
SET @FoundIndex = CHARINDEX(@delimiter, @String)
WHILE (@FoundIndex <> 0)
BEGIN
DECLARE @NextFoundIndex INT
SET @NextFoundIndex = CHARINDEX(@delimiter, @String, @FoundIndex+1)
SET @ReturnValue = SUBSTRING(@String, @FoundIndex,@NextFoundIndex-@FoundIndex)
SET @FoundIndex = CHARINDEX(@delimiter, @String)
INSERT @SplitValues (Asset_ID) VALUES (@ReturnValue)
END
RETURN
END