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 23/12/2010, 06h33   #1
Invité régulier
 
Robert Pythagore
Inscription : janvier 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Robert Pythagore

Informations forums :
Inscription : janvier 2010
Messages : 23
Points : 8
Points : 8
Par défaut Extraire les enregistrements de la table qui contiennent deux valeurs données : le champ contient des virgules

Bonjour,

Dans une table SAS, j'ai un champ texte pouvant être null, contenir une chaine sur 4 caractères, ou plusieurs chaines séparées par des virgules:

Champ
-------
AAAA
AAAA,BBBB
AAAA,BBBB,CCCC,EEEE
AAAA,CCCC,EEEE,DDDD,BBBB
ZZZZ,VVVV,CCCC,BBBB,DDDD

Comment faire pour extraire les enregistrements de la table qui contiennent 'BBBB' et 'CCCC' ?

Merci pour votre aide.
Qings est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 10h26   #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
Par défaut Extraire les enregistrements de la table qui contiennent deux valeurs données : le champ contient des virgules

utilise la fonction in

Code :
WHERE champ IN ('BBBB', 'CCCC');
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 18h35   #3
Invité régulier
 
Robert Pythagore
Inscription : janvier 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Robert Pythagore

Informations forums :
Inscription : janvier 2010
Messages : 23
Points : 8
Points : 8
Merci pour la réponse, mais je vais préciser ma question:
Je dois exclure de ma table les enregistrements qui contiennent la chaine 'BBBB' ou la chaine 'EEEE' ou les 2.
Dans l'extrait ci-dessous, le deuxième, troisième et quatrième enregistrements doivent être supprimés.

La solution qui consiste à utiliser "NOT IN" comme
Code :
WHERE Champ NOT IN ('BBBB','EEEE')
ne fonctionne pas.
Et la solution avec LIKE non plus ne fonctionne pas:
Code :
WHERE Champ LIKE ANY ('%BBBB%', '%EEEE%')
SAS me dit qu'il ne reconnait pas le "ANY" ?

Champ
-------
AAAA
AAAA,BBBB
AAAA,BBBB,CCCC,EEEE
AAAA,CCCC,EEEE,DDDD
ZZZZ,VVVV,CCCC,RRRR,DDDD
...

Merci.
PS: pour la longueur du champ 'LENGTH' en sql fonctionne très bien.
Qings est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 19h03   #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
okay, après relecture, il me semble comprendre que la variable CHAMP prends la valeur AAAA,BBBB mais pas BBBB. C'est bien ca (tu as une seule variable)? dans ces cas la la fonction index semble plus appropriée.

le not in fonctionne bien c'est juste qu'il ne reconnait pas la valeur BBBB, puisqu'elle n'existe pas
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 19h32   #5
Invité régulier
 
Robert Pythagore
Inscription : janvier 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Robert Pythagore

Informations forums :
Inscription : janvier 2010
Messages : 23
Points : 8
Points : 8
Merci, je vais tester la fonction index et je te dirais.

Mais pour préciser, j'ai une seule variable "Champ" qui prend différentes valeurs:"AAAA" ou "AAAA,BBBB" ou "AAAA,BBBB,CCCC,EEEE" ...etc.
Autrement dit, la variable Champ contient soit rien, soit une chaine de 4 lettres, soit plusieures chaines de 4 lettres séparées par des virgules.

Ce que je souhaite faire, c'est exclure les champs qui contiennent au moins l'une des valeurs suivantes: 'BBBB' ou 'EEEE'.
Si je l'applique à l'extrait ci-dessous, seuls le premier et le dernier enregistrement restent car ils ne contiennent ni 'BBBB' ni 'EEEE'.

Champ
-------
AAAA
AAAA,BBBB
AAAA,BBBB,CCCC,EEEE
AAAA,CCCC,EEEE,DDDD
ZZZZ,VVVV,CCCC,RRRR,DDDD
Qings est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 20h12   #6
Invité régulier
 
Robert Pythagore
Inscription : janvier 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Robert Pythagore

Informations forums :
Inscription : janvier 2010
Messages : 23
Points : 8
Points : 8
Merci Manoutz, la fonction indexc fonctionne effectivement très bien.
Voici la condition qui permet d'exclure les champs contenant au moins l'une des 2 chaines 'BBBB' ou 'EEEE' :

Code :
WHERE=(indexc(champ,'BBBB','EEEE')=0);
Merci.
Qings 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 20h12.


 
 
 
 
Partenaires

Hébergement Web