Problème requete SQL - Programmation
Marsh Posté le 07-06-2002 à 10:26:51
airv3 a écrit a écrit : J'ai nu problème je fais une requête SQL : select nom from ma_table where designation like('%mon_mot%'; Je voudrait que la requete puisse traité mon_mot qu'il soit en minuscule ou en majuscule! parce ke si mon mot est en majuscule dans ma base et que dans la requete je l'ecris en minuscule il me renvoie aucune reponse alors ke j'en ai une ki correspond! Merci de l'aide |
tu utilises quel SGBD pour ta base ?
Marsh Posté le 07-06-2002 à 10:27:54
le but de like et de % % est utile pour tout chaine qui contient ce qu'il y a entre % %
En ce qui concerne maj/min il faut probablement appliquer une fonction qui dépend du SGBD.
Marsh Posté le 07-06-2002 à 10:29:46
j'utilise une base ORacle 8i
Marsh Posté le 07-06-2002 à 10:33:00
select nom from ma_table where UPPER(designation) like('%MON_MOT%';
Explication : UPPER permet de ne considérer que la forme en majuscule du mot. Tu mets donc MON_MOT en majuscule d'un côté, et tu utilises de l'autre UPPER de ta colonne, comme ça Oracle convertissant tout en majuscule, tu ne te préoccupes plus de la casse.
Marsh Posté le 07-06-2002 à 10:33:24
DarkLord a écrit a écrit : le but de like et de % % est utile pour tout chaine qui contient ce qu'il y a entre % % En ce qui concerne maj/min il faut probablement appliquer une fonction qui dépend du SGBD. |
Pour le like j'utilise comme ca le moteur de recherche renvoie tout ce ki est silikaire a la recherche!
Mais mon problème ce sont les majuscule
Marsh Posté le 07-06-2002 à 10:34:54
airv3 a écrit a écrit : j'utilise une base ORacle 8i |
je sais que dans SQL server tu choisis à l'installation si ta base doit être "case sensitive" ou non. regarde dans les options d'oracle voir si tu trouve qqch
Marsh Posté le 07-06-2002 à 10:36:55
irulan a écrit a écrit : select nom from ma_table where UPPER(designation) like('%MON_MOT%'; Explication : UPPER permet de ne considérer que la forme en majuscule du mot. Tu mets donc MON_MOT en majuscule d'un côté, et tu utilises de l'autre UPPER de ta colonne, comme ça Oracle convertissant tout en majuscule, tu ne te préoccupes plus de la casse. |
Marsh Posté le 07-06-2002 à 10:45:14
irulan a écrit a écrit : |
Merci c'est bon!
Par contre tu vois si le mot commence par une majuscule et le reste minuscule ca marche pas!Exemple si je tape :
SERVLET -> c'est ok!
servlet -> c'est ok!
Servlet -> c'est pas ok!!!
Marsh Posté le 07-06-2002 à 10:49:50
Ah bon ?
Normalement, la commande UPPER met tout le mot en majuscule, indépendamment du fait qu'il y ait une majuscule dedans ou non à l'origine.
Quand tu parles de 'Servlet' c'est pour MON_MOT ou pour le contenu la colonne description ?
Marsh Posté le 07-06-2002 à 10:57:29
irulan a écrit a écrit : Ah bon ? Normalement, la commande UPPER met tout le mot en majuscule, indépendamment du fait qu'il y ait une majuscule dedans ou non à l'origine. Quand tu parles de 'Servlet' c'est pour MON_MOT ou pour le contenu la colonne description ? |
Oui c'est pour MON_MOT
Marsh Posté le 07-06-2002 à 11:09:37
Bon je réexplique : quand tu utilises UPPER(description), Oracle va effectuer la recherche sur la colonne description en convertissant en version majuscule toute chaîne de caractère présente dans la colonne, Ok ?
Donc pour MON_MOT, il faut que ce soit un mot en majuscule forcément (c'est d'ailleurs pour ça que je l'avais mis en majuscule et en gras dans l'exemple).
PS. Manifestement, Oracle a intégré une fonctionnalité permettant d'effectuer une conversion automatique d'une chaîne tout en minuscule car normalement tu ne devrais rien avoir en retour avec une chaîne de minuscule pour MON_MOT.
Marsh Posté le 07-06-2002 à 11:14:37
Ouai smais en fait MON_MOT je le recupère par un serlet (prog java) et c'est l'utilisateur ki tape le mot donc on est pas censé savoir si il va le tapé en majusculke ou minuscule
Marsh Posté le 07-06-2002 à 11:22:51
airv3 a écrit a écrit : Ouai smais en fait MON_MOT je le recupère par un serlet (prog java) et c'est l'utilisateur ki tape le mot donc on est pas censé savoir si il va le tapé en majusculke ou minuscule |
ben tu fais :
select nom from ma_table where UPPER(designation) like('%UPPER(MON_MOT)%';
Marsh Posté le 07-06-2002 à 11:25:29
mareek a écrit a écrit : ben tu fais : select nom from ma_table where UPPER(designation) like('%UPPER(MON_MOT)%'; |
je v essayé
Marsh Posté le 07-06-2002 à 11:27:16
mareek a écrit a écrit : ben tu fais : select nom from ma_table where UPPER(designation) like('%UPPER(MON_MOT)%'; |
ca marche carrément pas!
Marsh Posté le 07-06-2002 à 11:29:41
airv3 a écrit a écrit : ca marche carrément pas! |
en plus si je reprends la première requete :
select nom from table where UPPER(designation) like('%mon_mot%'
Si l'utilisateur tape le mot en minuscule ca passe pas! il me donne aucune réponse
Marsh Posté le 07-06-2002 à 11:41:50
Alors pas d'idée???
Marsh Posté le 07-06-2002 à 11:55:09
Ben tu n'as pas la possibilité d'utiliser une fonction pour convertir ton mot en majuscule avant de l'utiliser dans la requête SQL ?
Marsh Posté le 07-06-2002 à 11:58:07
irulan a écrit a écrit : Ben tu n'as pas la possibilité d'utiliser une fonction pour convertir ton mot en majuscule avant de l'utiliser dans la requête SQL ? |
franchement SQL j'en ai fais ke pendant 9 semaine et j'avais un profs bidon!
En fait ma requete je l'utilise dans un programme java qui se connect à une BD
Marsh Posté le 07-06-2002 à 12:17:27
String.toUpperCase();
Marsh Posté le 07-06-2002 à 12:38:00
DarkLord a écrit a écrit : String.toUpperCase(); |
ouais mais la c'et dans le prog java ke ca convertit en majuscule mais moi je ve ke ca se fasse au niveu du traitement dans la base de donnée
Marsh Posté le 07-06-2002 à 12:41:35
airv3 a écrit a écrit : ouais mais la c'et dans le prog java ke ca convertit en majuscule mais moi je ve ke ca se fasse au niveu du traitement dans la base de donnée |
copie la ligne où tu execute cette requète SQL sur le forum, on mettra ce qu'il faut et t'auras juste à la recopier dan ston programme.
Marsh Posté le 07-06-2002 à 12:45:49
mareek a écrit a écrit : copie la ligne où tu execute cette requète SQL sur le forum, on mettra ce qu'il faut et t'auras juste à la recopier dan ston programme. |
voi la a requete :
String req = "SELECT CHEMIN_ACCES, DESIGNATION from PRODUITS where UPPER(REF_PRODUITS) like('%" + rech + "%' or LOWER(DESIGNATION) like('%" + rech + "%'";
rech ca correspond au mot ke je recupère pour effectuer ma recherche dans la BD!
Marsh Posté le 07-06-2002 à 12:55:59
airv3 a écrit a écrit : voi la a requete : String req = "SELECT CHEMIN_ACCES, DESIGNATION from PRODUITS where UPPER(REF_PRODUITS) like('%" + rech + "%' or LOWER(DESIGNATION) like('%" + rech + "%'"; rech ca correspond au mot ke je recupère pour effectuer ma recherche dans la BD! |
essaie ça:
Code :
|
Marsh Posté le 07-06-2002 à 13:10:22
mareek a écrit a écrit : essaie ça:
|
ca marche impek, merci, je voyais pas l'utilisation de toUpperCAse com ca!
Merci de ton aide!!!!
Marsh Posté le 07-06-2002 à 13:28:29
benoide a écrit a écrit : |
Marsh Posté le 07-06-2002 à 14:10:17
airv3 a écrit a écrit : ouais mais la c'et dans le prog java ke ca convertit en majuscule mais moi je ve ke ca se fasse au niveu du traitement dans la base de donnée |
t'es vraiment trop bête toi franchement.
Marsh Posté le 07-06-2002 à 14:35:54
DarkLord a écrit a écrit : t'es vraiment trop bête toi franchement. |
quest ce ke tu ve on pe pas etre tous aussi intelligent ke toi!
moi je suis un ptit ki te ou bien je te
Marsh Posté le 07-06-2002 à 14:38:49
ouais mais non c'est ta réflexion qui est vraiment stupide. Désolé mais bon là quand meme
Marsh Posté le 07-06-2002 à 14:45:04
DarkLord a écrit a écrit : ouais mais non c'est ta réflexion qui est vraiment stupide. Désolé mais bon là quand meme |
Je sais mais ke ve tu!
Marsh Posté le 07-06-2002 à 14:58:50
airv3 a écrit a écrit : quest ce ke tu ve on pe pas etre tous aussi intelligent ke toi! moi je suis un ptit ki te ou bien je te |
forcement si tu te tape frénétiquement la tête contre les murs, ton cerveau va beaucoup moins bien marcher pour la programmation apres.
Marsh Posté le 07-06-2002 à 10:21:15
J'ai nu problème je fais une requête SQL :
select nom from ma_table where designation like('%mon_mot%';
Je voudrait que la requete puisse traité mon_mot qu'il soit en minuscule ou en majuscule! parce ke si mon mot est en majuscule dans ma base et que dans la requete je l'ecris en minuscule il me renvoie aucune reponse alors ke j'en ai une ki correspond!
Merci de l'aide
---------------
Un jour je me suis dit je vais tout niqué...