Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/02/2011, 09h51   #1
Invité de passage
 
Inscription : février 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 4
Points : 1
Points : 1
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
Methabaron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 09h58   #2
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
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
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 10h00   #3
Invité de passage
 
Inscription : février 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 4
Points : 1
Points : 1
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
Methabaron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 10h04   #4
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Si mais c'est une écriture un peu plus avancée. Tout dépend du but escompté.
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 13h26   #5
Invité de passage
 
Inscription : février 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 4
Points : 1
Points : 1
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
Methabaron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 18h55   #6
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
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 :
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
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/02/2011, 10h04   #7
Invité de passage
 
Inscription : février 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 4
Points : 1
Points : 1
C'est parfait !

Merci beaucoup.
Methabaron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h50.


 
 
 
 
Partenaires

Hébergement Web