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

Débutez Discussion :

Jointure avec la fonction LIKE lorsque la chaine de caractère contient un %


Sujet :

Débutez

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Jointure avec la fonction LIKE lorsque la chaine de caractère contient un %
    Bonjour,

    Je voudrais utiliser dans une jointure la fonction LIKE avec :

    WHERE T1.a LIKE T2.b

    T2.b pouvant contenir le masque % ou autre donnée pouvant correspondre au contenu de T1.a.

    Est-possible ?

    Cordialement

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Bonjour,

    La syntaxe de la chaîne de caractère après le like nécessite guillemets. A l'intérieur des guillemets tu peux mettre tout type de chaîne, avec un (ou des) %, un _ (qui remplace un caractère). Attention, c'est sensible à la majuscule.

    Manoutz

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse. Ce qui veux dire que je ne peux pas utiliser le contenu d'un champs pour remplacer ce qui doit être entre guillemets ?

    Cordialement

  4. #4
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Si mais c'est une écriture un peu plus avancée. Tout dépend du but escompté.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je ne sais pas très bien comment l'expliquer. L'idée est bien de pour faire une jointure entre deux table a et b sachant les éléments de jointure présents dans chaque table correspondent à une table de décision pouvant prendre comme valeur dans la table b :

    - % ou * signifiant n'importe quelle valeur du champ
    - une valeur exacte

    Je ne sais pas si je suis clair ?...

    Sinon pouvez me donner un exemple, ce sera peut-être parlant pour moi ?

    Cordialement

  6. #6
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Hé bien j'ai l'impression que ça fonctionne, à condition d'ajouter un % supplémentaire en fin d'expression.
    Dans mon exemple, j'ai prévu le cas "*" que tu décris comme équivalent à %.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    DATA work.t1 ;
      INPUT a $ ;
      x = _N_ ;
    CARDS ;
    abcd
    cccc
    adfe
    efgh
    ;
    RUN ;
    DATA work.t2 ;
      INPUT b $ ;
      y = _N_ ;
    CARDS ;
    efgh
    a%
    %
    %c%
    *
    ;
    RUN ;
    PROC SQL ;
      SELECT *
      FROM work.t1
        INNER JOIN
    	   work.t2
    	ON t1.a LIKE CATS(CASE (t2.b)
                            WHEN ("*") THEN ""
                            ELSE            t2.b
                          END,"%")
      ;
    QUIT ;
    Bon courage.
    Olivier
    Bon courage.
    Olivier

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    C'est parfait !

    Merci beaucoup.

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

Discussions similaires

  1. problème avec la fonction permuter de deux chaine
    Par abdou monta dans le forum Débuter
    Réponses: 4
    Dernier message: 08/04/2014, 23h37
  2. [PDO] Moteur de recherche avec PDO + fonction LIKE
    Par malaka44 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/10/2013, 16h16
  3. [AC-2007] Problème de recherche avec la fonction LIKE
    Par cedric pouilly dans le forum IHM
    Réponses: 2
    Dernier message: 08/04/2013, 16h39
  4. Utilisation caractère "*" avec la fonction "Like"
    Par esstin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/05/2009, 13h07
  5. Réponses: 23
    Dernier message: 13/11/2006, 03h33

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