IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Comment sélectionner que si c'est en minuscule ?


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut Comment sélectionner que si c'est en minuscule ?
    Bonjour à tous,

    Dans ma table sous SQL 2000, j'ai un champs qui peut contenir : rien ou des lettres en MAJUSCULES ou des lettres en minuscules.

    J'essaye de sortir uniquement tout ce qui est en minuscule (pas les champs vides et pas les champs contenant des majuscules.

    J'ai essayé ceci mais cela me donne que les vides :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM         F_ECRITUREC
    WHERE     (EC_Lettrage = LOWER(EC_Lettrage))
    Pouvez-vous me corriger ?

    Merci de votre aide.
    Thibault

  2. #2
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Personnellement, je travaillerais avec le code ASCII des caractères.

    Ils sont contenus entre 97 et 122, à toi de faire le test si le caractère actuel est compris dans cette fourchette.

    Il doit sans doute avoir quelque chose de plus easy mais je ne connais pas.

    @+

    beegees

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 327
    Points
    4 327
    Par défaut
    Bonjour,

    Ce problème peut paraitre surprennant mais en fait est tout à fait normal. Je suis a peu pres certain que ton interclassement pour cette colonne est de type ci (case insensitive), c'est à dire que lors des recherches SQL Server ne sait pas faire la différence entre les cases.
    Pour résoudre ce problème il te suffit d'utiliser un interclassement sensible a la casse. Je ne suis pas un expert en SQL Server, aussi je te reporte vers cet article qui en dit plus.

    Il ne restera plus qu'a éxécuter une requête comme tu le suggerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM         F_ECRITUREC
    WHERE     EC_Lettrage = LOWER(EC_Lettrage)
    Citation Envoyé par beegees Voir le message
    Ils sont contenus entre 97 et 122, à toi de faire le test si le caractère actuel est compris dans cette fourchette.
    Et tout cela pour chaque caractères de la chaîne ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Utilisez une clause COLLATE, c'est le seul moyen efficace.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM       F_ECRITUREC
    WHERE      EC_Lettrage = LOWER(EC_Lettrage) COLLATE French_CS_AI
    French = ordre dictionnaire français
    CS : casse sensible
    AI : accent insensible

    Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...er/collations/

    A +

Discussions similaires

  1. [WD12] Comment Savoir que INumpage n'est pas encore initialisée ?
    Par le_dilem dans le forum WinDev
    Réponses: 4
    Dernier message: 28/04/2010, 11h36
  2. Comment sélectionner que les lignes doublons
    Par Inconnu_du_69 dans le forum Langage SQL
    Réponses: 20
    Dernier message: 12/02/2009, 17h18
  3. Réponses: 6
    Dernier message: 25/02/2008, 22h38
  4. Réponses: 15
    Dernier message: 05/11/2007, 13h20
  5. Réponses: 13
    Dernier message: 19/02/2006, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo