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 : 48250
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

{C# / C#.NET} SPLIT SQL SANS TABLE TEMPORAIRE
Voici une fonction qui permet de splitter les données contenues dans une seule colonne avec séparate...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRACTION DES FICHIERS IMG DE GTA 3 (VICE CITY ET SAN ANDREAS)
Ce programme sert à ouvrir les fichiers IMG de GTA 3, Vice City et San Andreas pour en extraire le c...

{PHP} PHP EXTRAIRE DES MAILS D'UN GROS FICHIER LOCAL OU DISTANT
On peut extraire tout les mails d'un fichier sans se prendre la tête pendant dans jours... Qu'en pe...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRACTION DES ICONES D'UN FICHIER .EXE
La code utilise l'api windows pour extraire les icones d'une executable (metadata). On doit ajout...

{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...

{Delphi} EXTRAIRE PÉRIPHÉRIQUE USB ( HOTPLUG )
Salut à tous, Bon voilà, ce petit exemple pour extraire les périphériques USB. J'avais déjà poster...

{Delphi} UTILISER UNE DLL INCLUSE EN RESSOURCES
Suite à une question dans le forum de Kopierreko, je dépose cette source. Elle permet d'utiliser une...

{C / C++ / C++.NET} SIMPLE FONCTION TOKENIZE
Cette fonction est l'équivalent des fonctions split et explode de PHP, à savoir qu'elle sépare une c...

{C / C++ / C++.NET} CONVERTIR FLV 2 MP3
Tout est dit dans le titre, c'est une classe qui permet de récupérer un mp3 d'un flv. Je précise qu...