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 :

Exclure des majuscules


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    Par défaut Exclure des majuscules
    Bonjour,

    Quelqu'un sait-il comment on peut faire pour exclure les lettres en majuscules dans la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT
    E_DATECOMPTABLE as Date,
    E_LIBELLE As Libellé,
    E_DEBIT Asbit,
    E_CREDIT As Crédit,
    E_LETTRAGE As Lettr,
     
    FROM ECRITURE
     
    WHERE
    And year(E_DATECOMPTABLE)=2014
    And (E_LIBELLE like '%/PRE/%' or E_LIBELLE like '%VEMENT BNP%')
    Je voudrais dans le champs E_LETTRAGE ne pas afficher la ligne si il y a des caractères en majuscules :

    Exemple :
    Date Libellé Débit Crédit Lettr
    01/01/2014 FAC/32103 [352.03]/PRE/MAINTENANCEF 422,43 0,00 AAAS <-- Non
    01/01/2014 FAC/34695 [406.33]/PRE/MAINTENANCEF 487,59 0,00 aabu <-- Oui


    Y a-t-il une fonction qui permette d'identifier un caractère en majuscules ?
    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous pouvez faire un LIKE sensible à la casse. Si le besoin est récurrent, il serait sans doute préférable de changer la collation de la colonne.

    enfin cela dépendra de votre SGBD, mais vous ne l'avez pas précisé.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    Par défaut
    Je suis novice sur le langage SQL je connais la fonction LIKE, mais comment fait-on pour faire un LIKE sensible à la case ?
    Petite précision mon SGBD est SQL Serveur.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 776
    Points
    30 776
    Par défaut
    S'il y a des caractères majuscules dans chaine, alors LOWER(chaine) sera différent de chaine...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    ceci devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE E_LETTRAGE NOT LIKE '%[A-Z]%' COLLATE Latin1_General_100_BIN

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup cela fonctionne super bien...

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 755
    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 755
    Points : 52 521
    Points
    52 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Vous pouvez faire un LIKE sensible à la casse. Si le besoin est récurrent, il serait sans doute préférable de changer la collation de la colonne.

    enfin cela dépendra de votre SGBD, mais vous ne l'avez pas précisé.
    NON !!!!!

    LIKE suit les mêmes règles de gestion de la casse ou des accents que la collation propre à l'expression visée. Il n'existe pas de LIKE sensible ou insensible à la casse.
    PostGreSQL à bien tenté d'inventer une merdouille imbitable qui s’appelle ILIKE... mais passons.

    La solution normative est d'utiliser une collation (opérateur COLLATE).
    Seul Oracle fait exception à cette règle avec son NLS parfaitement iconoclaste !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 755
    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 755
    Points : 52 521
    Points
    52 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    ceci devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE E_LETTRAGE NOT LIKE '%[A-Z]%' COLLATE Latin1_General_100_BIN
    NON !!!

    la bonne solution est tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE  E_LETTRAGE = UPPER(E_LETTRAGE) COLLATE French_CS_AI
    Avec BIN, vous rendez aussi sensible aux accents ce qui n'est pas demandé...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    ceci devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE E_LETTRAGE NOT LIKE '%[A-Z]%' COLLATE Latin1_General_100_BIN
    Tu as raison ''aieeeuuuuu'' ta solution fonctionne mieux, car cela ne me remonte que ceux qui sont en minuscules et vides alors que la solution de ''SQLpro'' ne me ressort ceux qui sont en majuscules et les vides.

  10. #10
    Membre confirmé
    Avatar de Bibeleuh
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2010
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2010
    Messages : 209
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par GuiJenn34 Voir le message
    Tu as raison ''aieeeuuuuu'' ta solution fonctionne mieux, car cela ne me remonte que ceux qui sont en minuscules et vides alors que la solution de ''SQLpro'' ne me ressort ceux qui sont en majuscules et les vides.
    Il suffit de remplacer UPPER par LOWER pour que la solution de SQLpro réponde à votre besoin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de requete multi table pour exclure des resultats
    Par voilabad dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/05/2006, 08h49
  2. [XML] exclure des éléments d'un éléments parent
    Par Djakisback dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 31/03/2006, 10h45
  3. Exclure des enregistrements dans une requête
    Par r@phy dans le forum Access
    Réponses: 3
    Dernier message: 29/03/2006, 11h18
  4. Exclure des données dans un état
    Par Flagny dans le forum Access
    Réponses: 2
    Dernier message: 13/01/2006, 15h23
  5. Exclure des enregistrements d'une requête
    Par beegees dans le forum Access
    Réponses: 2
    Dernier message: 20/06/2005, 13h01

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