Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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/08/2006, 15h59   #1
Membre habitué
 
Inscription : juin 2005
Messages : 275
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 275
Points : 141
Points : 141
Par défaut [DB2] requete sur une chaine

Je cherche à récuperer des lignes d'une table. Cette table contient les noms d'une personne, que je voudrais pouvoir retrouver même si un utilisateur ne connait pas leur intégralité.

Par exemple, en supposant qu'une personne de ma base se nomme
"Pierre Alain Michel Dupont", je voudrais pouvoir les retrouver aussi bien avec "Pierre Alain" que "Pierre Dupont", ou encore "Alain Dupont".

Avec toutes les déclinaisons possibles en fait.

Quel est la méthode la plus efficace ?
abertaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 20h55   #2
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
tu as essayé avec like et une wildcard du type %mot1%mot2%
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 11h45   #3
Membre habitué
 
Inscription : juin 2005
Messages : 275
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 275
Points : 141
Points : 141
J'avais fait une erreur de syntaxe. Merci pour ta réponse.

La requete exacte est donc :
Code :
1
2
3
4
5
6
 
SELECT id_personne FROM personne WHERE 
lower(personne_nom) LIKE lower('%MOT1%MOT2%MOT3%') 
OR lower(personne_nom) LIKE lower('MOT1%MOT3%MOT2%')
OR lower(personne_nom) LIKE lower('MOT3%MOT2%MOT1%')
OR lower(personne_nom) LIKE lower('MOT2%MOT1%MOT3%');
ou bien, si l'on veut aussi retrouver les résultats contenant un des noms utilisés

Code :
1
2
3
4
5
 
SELECT id_personne FROM personne WHERE 
lower(personne_nom) LIKE lower('%MOT1%') 
OR lower(personne_nom) LIKE lower('MOT2%')
OR lower(personne_nom) LIKE lower('%MOT3%') ;
abertaud 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 21h45.


 
 
 
 
Partenaires

Hébergement Web