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 :

Condition pas assez restrictive ?


Sujet :

MS SQL Server

  1. #1
    Membre confirmé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 920
    Points : 606
    Points
    606
    Par défaut Condition pas assez restrictive ?
    Bonjour,

    je cherche à conditionner une requête pour ne chercher et trouver que les enregistrements contenant "si("
    Ci-après, un aperçu du contenu de la colonne formule de la table formules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    formule
    si(toto=titi;1,2);
    NB.SI(C5:C9;"<>0")-1;
    arrondi(si(totos=titi;tata*1.5,tata*2));
    rassis=totos-titi;
    L'objectif étant de trouver les cas d'emploi de "si" et uniquement si

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from formules where formule like '%si(%'
    me renvoie 3 lignes (1,2,3) alors que je ne voudrais récupérer que les lignes 1 et 3

    Dans la même veine, je ne souhaite récupérer que les enregistrements avec le mot "toto" entier pas les totos

    La condition dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from formules where formule like '%toto%'
    me renvoie trop d'enregistrements.

    D'avance, merci pour vos suggestions

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Bonjour,

    Je ne connais malheureusement pas assez les formules (EXCEL à priori?)
    Si vos si( sont toujours en minuscule et les autres cas (NB.SI par exemple mais peut-être y en a t'il d'autres?) vous pouvez forcer une CASE sensitive lors de votre recherche.

    La solution pourrait venir de la mise en place d'une convention de nommage pour vos nom de variables dans les formules (majuscules systématique ou "_" en début et fin afin de pouvoir les retrouver avec le LIKE etc.).

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Vous devez pouvoir passer par des expressions régulières dans votre LIKE:

    (voir le billet de blog par Christian Robert intitulé SQL Server : La vérité sur le LIKE)
    qui ne remontera pas les 'toto' précédés ou suivi d'une lettre...
    A vous d'affiner.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select * 
    from dbo.Formules
    where formule LIKE '[^a-z]Toto[^a-z]%'

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 901
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    1) SELECT * FROM formules WHERE formule LIKE '%si(%' COLLATE French_CS_AS

    Pour le second le miuyex est de faire une fonction UDF pour traiter ce cas car avec une expression régulière c'est TRES TRES TRES lent !

    A +

Discussions similaires

  1. Condition pas assez restrictive?
    Par Christophe Charron dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/03/2011, 11h02
  2. [VBA-E]Msgbox pas assez grand
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 19/04/2006, 14h18
  3. Groupbox pas assez dynamique
    Par gdpasmini dans le forum Windows
    Réponses: 6
    Dernier message: 31/03/2006, 22h33

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