Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 09/06/2008, 14h07   #1
Membre habitué
 
Inscription : septembre 2002
Messages : 253
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 253
Points : 127
Points : 127
Par défaut Select sans respecter la casse ?

Bonjour,

Je cherche un moyen dans un select de faire une recherche sur du texte sans respecter la casse.
J'ai bien trouvé:
alter session set NLS_COMP=ANSI;
alter session set NLS_SORT=GENERIC_BASELETTER;

Est-ce qu'il existe un autre moyen ? Une personne m'avait parlé d'une commande sql mise directement dans le select mais je ne m'en souviens plus !!

Merci d'avance pour votre aide.

@+
Thomad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 14h13   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
il n'y a aucun moyen, tu dois utiliser UPPER ou LOWER pour éviter les problèmes de casse.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 14h21   #3
Membre habitué
 
Inscription : septembre 2002
Messages : 253
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 253
Points : 127
Points : 127
Donc
alter session set NLS_COMP=ANSI;
alter session set NLS_SORT=GENERIC_BASELETTER;
ne fonctionne pas ?
Thomad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 14h45   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Non, ça ne sert pas à ignorer la casse.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 15h33   #5
Membre habitué
 
Inscription : septembre 2002
Messages : 253
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 253
Points : 127
Points : 127
je vois aussi qu'un:

UPPER(CONVERT(CHAMP, 'US7ASCII')) LIKE UPPER(CONVERT(VALEUR, 'US7ASCII'))

fonctionne. Mais quel jeu de caractères doit-on utiliser (appli. en français sous XP ) ?
Thomad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 15h43   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
pourquoi donc s'embêter avec le CONVERT ?

Code :
UPPER(CHAMP) LIKE UPPER(VALEUR)
seul inconvénient, il faut faire un index de fonction puisque l'index sur la colonne ne sera pas utilisé
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 15h56   #7
Membre habitué
 
Inscription : septembre 2002
Messages : 253
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 253
Points : 127
Points : 127
Et oui !!! Tu as raison. Je n'avais pas pensé à faire un UPPER de la colonne !
Thomad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 13h40   #8
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 41
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 41
Points : 25
Points : 25
je conseil beacoup plus lower que upper pour des raisons que tu devrais comprendre.
WHERE lower(champ) = lower('valeur').
A+
nwaitic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 14h03   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
j'aimerai beaucoup avoir l'explication
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 15h30   #10
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 975
Points : 3 975
Citation:
Envoyé par nwaitic Voir le message
je conseille davantage lower que upper pour des raisons que tu devrais comprendre.
???????
Je ne vois pas du tout l'évidence du lower sur le upper !!!
Je ne vois même pas de différence !
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 16h34   #11
Membre éprouvé
 
Avatar de miloux32
 
Inscription : juillet 2003
Messages : 538
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 538
Points : 473
Points : 473
Citation:
Envoyé par orafrance Voir le message
j'aimerai beaucoup avoir l'explication
Pareil ... j'allais dire les caractères accentués mais non en fait ....

Et perso (apres ca depend de ton truc)

mais moi j'éviterais le
Code :
WHERE UPPER(champ) = UPPER(valeur)
Pour une question de principe à la con, je convertirais valeur en majuscule avant (enfin ca dépend de ton appli aussi )


Code :
1
2
3
VALEUR_MAJ= UPPER(Valeur)
 
...WHERE UPPER(champ)= VALEUR_MAJ
__________________
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
miloux32 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 02h22.


 
 
 
 
Partenaires

Hébergement Web