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

SQL Oracle Discussion :

SQL et expression régulière


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Kazevil
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2006
    Messages : 105
    Par défaut SQL et expression régulière
    Bonjour à tous

    Je souhaite faire une requête sur v$session afin de sortir la liste des programmes qui ont une session inactive et dont le nom ne commence pas par ACKBACK, INTF et ORDER.
    Comme il n'est pas possible d'utiliser le caractère % dans un in, je me sui lancé dans l'utilisation des expression régulière et j'ai donc fait la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select PROGRAM,OSUSER,STATUS from v$session where NOT REGEXP_LIKE(PROGRAM, '^(ACKBACK|INTF|ORDER)') and status='INACTIVE';
    Malheureusement ça ne semble pas fonctionner à 100%. Si par exemple les programmes INTF60X.exe ne sont plus dans la liste, j'y trouve toujours des ACKBACK.EXE.

    J'en appelle donc aux maitres des expressions régulières pour me donner un petit coup de main

    Merci d'avance.

    Kaz

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Ça a pourtant l'air d'être bon.
    Ce ne serait pas un problème de casse ? Genre un AckBack.exe...

    Avec un petit upper ca résoudra le problème si c'est bien ça..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT PROGRAM,OSUSER,STATUS 
    FROM v$session 
    WHERE NOT REGEXP_LIKE(UPPER(PROGRAM), '^(ACKBACK|INTF|ORDER)') AND STATUS='INACTIVE';

  3. #3
    Membre éprouvé Avatar de Kazevil
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2006
    Messages : 105
    Par défaut
    Effectivement Scorpio, ça venait bien d'un soucis de casse.
    J'étais tellement a fond dans mon expression régulière que je n'ai pas pensé à ça

    Merci pour le coup de main.

    A++ Kaz

  4. #4
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Tu peux aussi utiliser le 3e paramètres de REGEXP_LIKE qui te permet de rendre la recherche sensible ('c') ou non ('i') à la casse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT PROGRAM,OSUSER,STATUS FROM v$session WHERE NOT REGEXP_LIKE(PROGRAM, '^(ACKBACK|INTF|ORDER)', 'i') AND STATUS='INACTIVE';

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par Kazevil Voir le message
    Comme il n'est pas possible d'utiliser le caractère % dans un in, je me sui lancé dans l'utilisation des expression régulière et j'ai donc fait la requête suivante:
    C'est vrai mais vous pouvez faire un AND !
    Voici la solution sans expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT PROGRAM, OSUSER, STATUS
    FROM v$session
    WHERE STATUS = 'INACTIVE'
    AND UPPER(PROGRAM) NOT LIKE 'ACKBACK%'
    AND UPPER(PROGRAM) NOT LIKE 'INTF%'
    AND UPPER(PROGRAM) NOT LIKE 'ORDER%'

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

Discussions similaires

  1. [MySQL] SQL et expression régulière
    Par Istrella dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/02/2008, 18h28
  2. Expression régulière / SQL
    Par jd020674 dans le forum DB2
    Réponses: 1
    Dernier message: 26/10/2007, 08h15
  3. expression régulières T-SQL
    Par kalari dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/04/2007, 01h18
  4. Réponses: 1
    Dernier message: 10/01/2007, 09h39
  5. [PL/SQL] Expressions régulières 9i
    Par JohnBlatt dans le forum SQL
    Réponses: 5
    Dernier message: 17/10/2006, 15h04

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