Les Snippets

Connexion

Extraction de chaine de caractères à partir d'une occurence ("Separator")

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 21/04/2006 22:38:22 et initié par JMO [Liste]
Date de mise à jour : 05/08/2006 13:41:12
Vue : 32356
Catégorie(s) : Chaîne de caractères
Langages dispo pour ce code :
- VBScript
- VB6
- PHP 3, PHP 4, PHP 5
- C# 1.x, C# 2.x
- Java
- Javascript
- C
- Delphi 5
- SQL, SQL 2005
- ActionScript Flash
- Windev
- Python
- Voir tous les langages pour ce code snippet



Langage : SQL , SQL 2005
Date ajout : 30/03/2007
Posté par pifou25 [Liste]
/*********************************************************************************
Fonction d'éclatement d'une chaine de caractère en une table en fonction d'un séparateur
-----------------------------------------------------------------------------------
@PInStrSource :        Chaine de caractère source
@pInChrSeparator :    séparateur
**********************************************************************************/
CREATE FUNCTION [dbo].Split(
   @PInStrSource varchar(8000) = NULL, @pInChrSeparator char(1) = ';'
 )
 RETURNS @ARRAY TABLE (ItemValue VARCHAR(1000))
AS
BEGIN
DECLARE @CurrentStr varchar(2000)
DECLARE @ItemStr varchar(200)
SET @CurrentStr = @PInStrSource
WHILE Datalength(@CurrentStr) > 0
BEGIN
    IF CHARINDEX(@pInChrSeparator, @CurrentStr,1) > 0 
    BEGIN
        SET @ItemStr = SUBSTRING (@CurrentStr, 1, CHARINDEX(@pInChrSeparator, @CurrentStr,1) - 1)
        SET @CurrentStr = SUBSTRING (@CurrentStr, CHARINDEX(@pInChrSeparator,
            @CurrentStr,1) + 1, (Datalength(@CurrentStr) - CHARINDEX(@pInChrSeparator, @CurrentStr,1) + 1))
        INSERT @ARRAY (ItemValue) VALUES (@ItemStr)
    END
    ELSE
    BEGIN                
        INSERT @ARRAY (ItemValue) VALUES (@CurrentStr)    
        BREAK;
    END 
END
RETURN
END
Remarque :
La fonction split n'existe pas sur SQL server et il peut être très pratique de l'utiliser, à travers une table: exemple:

declare @IdSelProgr AS varchar(8000)
set @IdSelProgr = '1;2;3;4;5'
CREATE TABLE #tmp_SelProg (SelectedProg VARCHAR(10))
INSERT INTO #tmp_SelProg SELECT dbo.Split( @IdSelProgr)
...

Snippets en rapport avec : Occurences, Extraire, Séparateur, Extraction, Split



Codes sources en rapport avec : Occurences, Extraire, Séparateur, Extraction, Split

{JAVA / J2EE} JFIFEXTRACT
Cette appli en ligne de commande permet d'extraire les images jpeg (format JFIF) de différents types...

{Visual Basic, VB6, VB.NET, VB 2005} GENERATEUR D AUTO EXTRACTIBLE EN VB6
Cette source permet de générer un programme auto extracteur de fichiers en vb6. Elle comprend le pro...

{C / C++ / C++.NET} WIN32CAB .CAB
Compresser decompresser des fichiers en .cab -password encrypter le fichier -Split fichier a la ...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRAIRE TOUS LES ICONES D'UN ÉXÉCUTABLE OU D'UNE DLL
un simple projet contenant deux classes pour l'extraction d'icones code original en C# http:/...

{PHP} EXTRACTEUR DE VARIABLES DE FORMULAIRES
Ça arrive parfois d'avoir un formulaire avec beaucoup de variables et reprendre chaque variable à tr...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRAIRE LE TEXTE DES FENETRES D'APPLICATIONS TIERCES (LISTBOX, LISTVIEW, TEXTBOXES, ...)
une mini source mais assez utile, dans certains cas... cas concrêt: j'ai une appli au boulot qui...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRACTION CODE HTML, EDITION DYNAMIQUE DE FICHIER HTML (MARCHE EN VB6)
A plusieurs reprises, j'ai trouvé des questions sur le forum portant sur la possibilité d'extraire l...

{Delphi} DELPHI : PROCEDURE SPLIT SIMILAIRE A LA FONCTION EPONYME EN VB
Découpe une chaîne délimitée en ses éléments pour remplir un tableau dynamique passé en paramètre. U...

{Delphi} FONCTION SPLIT
Du fait que les fonctions Split que j'ai trouvé sur le web ne marchait pas correctement, j'ai décidé...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRACTION AUDIO FLV VERS MP3
[mode hypocrite=on] Votre radio internet préférée vous propose une écoute de la musique en streamin...