J'ai écrit une fonction de valeur de table dans Microsoft SQL Server 2008 pour prendre une colonne séparée par des virgules dans une base de données pour cracher des lignes distinctes pour chaque valeur.
Ex: "un, deux, trois, quatre" retournerait une nouvelle table avec une seule colonne contenant les valeurs suivantes:
one
two
three
four
Ce code vous semble-t-il sujet aux erreurs? Quand je le teste avec
SELECT * FROM utvf_Split('one,two,three,four',',')
il fonctionne pour toujours et ne renvoie jamais rien. Cela devient vraiment décourageant, d'autant plus qu'il n'y a pas de fonctions séparées intégrées sur le serveur MSSQL (POURQUOI POURQUOI POURQUOI?!) Et toutes les fonctions similaires que j'ai trouvées sur le Web sont des ordures absolues ou tout simplement sans rapport avec ce que j'essaie de faire .
Voici la fonction:
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