IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Select avec Regex (extraction chaine) [Débutant(e)]


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut Select avec Regex (extraction chaine)
    Bonjour à tous,

    je dois extraire d'un champs texte certaines valeur.

    HPMOI MSWinEventLog 1 System 1333 jeu. mars 15 19:01:31 201 129 Microsoft-Windows-Time-Service AUTORITE NT\SERVICE LOCAL

    J'ai besoin de récuperer le premier mot, avant le premier espace,
    J'ai besoin aussi de récupérer la valeur après MSWinEventLog, et les 3 mots qui suivent, soit : 1 System 1333
    et enfin AUTORITE NT\SERVICE LOCAL

    J'ai pensé que la solution Regex est la bonne, mais je ne sais pas faire en Regex.

    Merci pour votre aide.
    PS : C'est bien un log windows event.

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    MS n'a pas encore implémenté nativement les expressions régulières dans son SGBDR. On va encore attendre les prochaines versions...

    Par contre pour ton besoin tu peux spliter ta chaîne de caractères pour récupérer ce que tu veux.

    Voici une exemple T-SQL et autre exemple avec un CLR (C#)
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut
    Bonjour,

    Merci ZINZINDOHOUE,

    Je viens d'essayer, mais en MS SQL 2005, les fonctions : @i +=1 ou @j -= 1

    Ne fonctionne pas

    Le principe c'est que je vais indenter i et dedenter j. Donc je dois transformer en quelque chose comme :
    SET @i = @i + 1

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut
    Bonjour,

    Bon j'ai trouvé comment modifier la fonction.

    Mais j'ai un problème pour l'appel de la fonction : Comment envoyer les lignes de la table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from dbo.[F_SQLSplit]('HPMOI MSWinEventLog 1 System 1333 jeu. mars 15 19:01:31 201 129 Microsoft-Windows-Time-Service AUTORITE NT\SERVICE LOCAL',' ')  where idsplit=1
    Cela me donne la bonne information. Mais comme ces données sont stockée dans une table, je ne comprend pas comment mettre le champs de la table dans les paramètre de la fonction.

    Merci

  5. #5
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create table t1 (c1 varchar(max))
    insert into t1 values ('HPMOI MSWinEventLog 1 System 1333 jeu. mars 15 19:01:31 201 129 Microsoft-Windows-Time-Service AUTORITE NT\SERVICE LOCAL')
    select * from t1  CROSS APPLY dbo.F_SQLSplit(c1,' ')
    Etienne ZINZINDOHOUE
    Billets-Articles

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut
    Re Bonjour,

    Merci pour l'instruction, Génial je ne connaissait pas l'instruction CROSS.

    Malheuresement cela ne fonctionne pas, car je crois que je suis trop gourmant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XE] SELECT avec ORDER BY sur chaine > 1000
    Par kooky dans le forum SQL
    Réponses: 7
    Dernier message: 21/09/2010, 10h53
  2. extraire sous chaine avec regex
    Par reg01 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 28/06/2010, 17h39
  3. regex / extraction de données dans une chaine
    Par fred6609 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/01/2009, 08h34
  4. Probleme de regex - extraction url avec tiret
    Par joboy84 dans le forum Langage
    Réponses: 1
    Dernier message: 01/07/2008, 20h37
  5. [Oracle] Trier avec une extraction au sein du chaine de car
    Par magic charly dans le forum Langage SQL
    Réponses: 13
    Dernier message: 14/04/2006, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo