Bonjour,
Je cherche à découper une chaine de caractères et d'avoir le résultat dans une table.
Le but est d'ensuite, traiter chaque élément dans un curseur.
Voici la fonction que j'utilise :
Le code est largement insipiré de choses trouver sur le net (pte même ici) mais je cherche un moyen de l'optimiser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 CREATE FUNCTION dbo.SplitDansTable(@TEXTE TEXT) RETURNS @table TABLE([STR] TEXT) AS BEGIN DECLARE @position INT DECLARE @buffer VARCHAR(8000) DECLARE @position_debut INT DECLARE @position_fin INT SET @position=1 WHILE @position>0 AND @position<DATALENGTH(@TEXTE) BEGIN -- Read SET @buffer=SUBSTRING(@TEXTE, @position, 8000) -- Find '<#>' SET @position_debut=CHARINDEX('<#>', @buffer) + 3 --print @position_debut -- Find '<@>' SET @position_fin=CHARINDEX('<@>', @buffer) -1 -- Next IF NOT @position_debut>0 OR NOT @position_fin>0 SET @position=0 ELSE BEGIN --print @position --print @position_fin SET @position=@position+@position_fin+3 --print @position INSERT INTO @table(STR) VALUES(SUBSTRING(@buffer, @position_debut, @position_fin-(@position_debut-1))) END END RETURN END
Infos diverses : Il me faut <#> et <@> car il peut y avoir des champs textes ...
Merci d'avance !
Partager