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 :

[SELECT] recherche de majuscules accentuées


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut [SELECT] recherche de majuscules accentuées
    Bonjour,

    J'ai un petit soucis, je souhaiterais enlever tous les accents qui se trouveraient sur des lettres majuscules dans l'une de mes tables. Et pour ça je dois d'abord les repérer... et comme un E est équivalent à un É... ben voilà c'est pas top n'y at-il pas un mot magique à mettre dans ma requête dans le même genre que BINARY ?

    Merci d'avance

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    C'est quoi ton SGBD ?

  3. #3
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    C'est MySQL (4.0.17)... me dites surtout pas qu'il n'est pas capable de faire ça...

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Je propose ça au hasard : avec les codes ASCII ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  5. #5
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Alors j'ai essayé avec :

    LIKE '%É%'
    LIKE '%É%'
    LIKE '%0xC9%'
    LIKE '%0x90%'
    LIKE '%U+00C9%'

    mon avis qu'il doit y avoir un mot magique...

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Magnus is Rigth : Sous Oracle, j'ai essayé les requête suivantes, qui font la même chose (et qui en plus donnent le même résultat !!!) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> SELECT Per_Nom 
      2    FROM GentPer
      3   WHERE Per_Nom LIKE '%É%';
     
    PER_NOM
    ------------------------------
    AIMÉE
     
    SQL> SELECT Per_Nom 
      2    FROM GentPer
      3   WHERE Per_Nom LIKE '%' || CHR(201)  || '%';
     
    PER_NOM
    ------------------------------
    AIMÉE
    Donc si la première ne fonctioone pas sous MySQL, vois si ASCII fonctionne en MySQL
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  7. #7
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Hummph, et ben ça marche pas... j'ai l'impression que je m'y prends mal... au fait mes tables sont en InnoDB... c'est problèmatique ? Déjà que le FULLTEXT n'est pas valable pour ce format là.

    Vais créer une table bidon MyISAM pour voir.

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  8. #8
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Ben en MyISAM ça passe pas non plus.

    La première requête me trouve les E.
    Et la seconde n'est pas valide (Erreur de syntaxe près de '(201) || '%' LIMIT 0, 30' à la ligne 3)

    Ca vient de moi, de MySQL, ou d'autre chose ?


    > edit

    Je viens de tomber là dessus :
    http://archives.neohapsis.com/archiv...3-q4/2506.html

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    J'ai testé les requêtes de Xo et elles fonctionnent aussi sous Interbase 6 mais la 2ème requête ne fonctionnera pas si l'UDF CHR n'est pas déclarée.
    Tu as vérifié qu'elle était déclarée sous MySQL ?

    D'autre part, tu peux nous donner la requête que tu exécutes et qui te génère un message d'erreur ?

    Au passage, Xo : d'après ce que j'ai vu sur le site :http://www.lookuptables.com/, le code ASCII devrait être 144 et pourtant c'est bien 201, comment savais-tu ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  10. #10
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Je ne sais pas comment faire pour voir si CHR est déclarée...

    et la requête qui me produit une erreur est là suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  * 
    FROM detalle_funcionario
    WHERE id_columna = 3 
    AND valor_digitado LIKE  '%' || CHR( 201  )  ||  '%'

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    ça ne devait pas exactement être cette requête parce qu'il indiqué une erreur proche du mot clé LIMIT il me semble mais bon...

    Personnellement, sous IB 6 pour savoir si une UDF existe j'utilise IBExpert mais après je ne sais quels outils te permettent de visualiser la structure d'une base MySQL (fais des recherches sur le forum en question )

    Si tu veux une requête minimale pour savoir si cette UDF est déclarée chez toi tente avec une table de ton choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CHR(48)
    FROM <MyTable> ;
    ça devrait te renvoyer '0'
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  12. #12
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Magnus
    Au passage, Xo : d'après ce que j'ai vu sur le site :http://www.lookuptables.com/, le code ASCII devrait être 144 et pourtant c'est bien 201, comment savais-tu ?
    J'ai juste fait la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> SELECT ASCII('É') FROM DUAL;
     
    ASCII('É')
    ----------
           201
    Ca ne dépend pas du jeu de caractère ? Je n'y connais rien ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  13. #13
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Magnus, l'erreur n'était pas près du LIMIT, mais de (201)...

    J'ai exécuté la requête que tu m'as donné (select chr(48) from colectividades), il me retourne une erreur près de (48)...

    J'suis une peu perdue là, MySQL est limité on dirait... Je ne vois pas d'où ça pourrait venir.

    Pour ce qui est du jeu de caractère je suis en latin_swedish_ci. Si qq un a une autre idée.

    > edit
    Merci les smiley, ça rend mon post nettement plus lisible

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    ta collation est visiblement insensible à la casse. La recherche par LIKE ou égalité va te donner des réponses sans tenir compte de la casse.

    Mais qu'est ce qui te dérange dans le fait que les caractères majuscules soient accentués ? C'est d'ailleurs une obligation légale que d'accentuer les majuscules.

    A lire : http://sqlpro.developpez.com/cours/normes/#L1.1.3

    Sinon il existe dans certains SGBDR des fonctions de remplacement comme TRANSLATION

    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/ * * * * *

  15. #15
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par SQLpro
    C'est d'ailleurs une obligation légale que d'accentuer les majuscules.
    Enfin quelqu'un qui le sait !!!! Je pensais même pas que ça existait... Les caractères accentués sont des caractères à part entière, et ce même POUR LES CARACTÈRES MAJUSCULES. Il s'agit, en cas d'oubli de l'accent, d'une faute d'orthographe dans la langue française.

    Citation Envoyé par Xo
    Citation Envoyé par Magnus
    Au passage, Xo : d'après ce que j'ai vu sur le site : http://www.lookuptables.com/, le code ASCII devrait être 144 et pourtant c'est bien 201, comment savais-tu ?
    Ca ne dépend pas du jeu de caractère ? Je n'y connais rien
    Pour information, le code ASCII était codés à l'origine sur 4 bits, donc de 0 à 127. Mais prévu pour la langue anglaise, il n'intégrait pas les caractères accentués, cyrilliques, et autres. Il a donc fallu l'étendre, en codant les caractères sur 8 bits. Mais à ce jour il existe plusieurs codes ASCII étendus. Voici les plus couramment utilisés, dépendant de la plate-forme utilisée :
    • Le code ASCII étendu OEM affecte la valeur 144 au caractère 'É' (Tiens d'ailleurs mon XP version anglaise arbore OEM), et ne possède pas le caractère 'È' (que j'ai donc du copier-coller pour écrire ce post). C'est celui que tu as vu sur www.lookuptables.com qui est un site anglais, Magnus.
      Le code ASCII étendu ANSI affecte la valeur 201 au caractère 'É' et la valeur 200 au caractère 'È' (XP version française utilise ce dernier, du moins sur mon PC personnel). C'est celui utilisé par le moteur SQL de Xo, qui doit très certainement travailler sur une plate-forme française.


    Voilà ça devrait être un peu plus clair pour vous.

    ++
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  16. #16
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Original Prankster
    Enfin quelqu'un qui le sait !!!! Je pensais même pas que ça existait... Les caractères accentués sont des caractères à part entière, et ce même POUR LES CARACTÈRES MAJUSCULES. Il s'agit, en cas d'oubli de l'accent, d'une faute d'orthographe dans la langue française.
    Quand j'étais à l'école, on m'a appris que les majuscules ne prennaient jamais d'accent. Bien sur, ça a changé entre temps, mais on ne m'a pas envoyé de mise à jour . Je l'ai ensuite appris il y a un certains nombres d'année, en discutant avec un jeune développeur.

    Mais le principal problème, ça n'est pas de le savoir (maintenant, pas mal de gens le savent, en tout cas autour de moi), mais bien d'accéder aux susdits caractères. Pour taper ce magnifique É, je dois faire Alt et 144 (et non pas 201 )
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  17. #17
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par Xo
    Quand j'étais à l'école, on m'a appris que les majuscules ne prennaient jamais d'accent
    C'est bizarre, moi j'ai appris l'inverse en cours de communication.

    Citation Envoyé par Xo
    Pour taper ce magnifique É, je dois faire Alt et 144 (et non pas 201)
    Et bien dans ce cas tu bosses sous une plate-forme OEM, tandis que ta fonction ASCII() se base sur la norme ANSI.
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  18. #18
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Xo a écrit :
    Quand j'étais à l'école, on m'a appris que les majuscules ne prennaient jamais d'accent.
    Les profs qui disent de telles ânneries devraient être renvoyés de l'éducation nationale.

    Voici quelques titres pour vous convaincre :
    J’AIME LES BISCUITS SALES
    GISCARD CHAHUTE A L’ASSEMBLEE
    LE COUP DE DE DE DE GAULLE
    Cepandant pour expliquer qu'une affirmation aussi stupide ait pu circuler, il faut se souvenir qu'au lendemain de la guerre de 39-45, les journaux n'avaient plus les moyens de paraîtres. Ce sont donc des linotypes américaines, donc dépourvues d'accents, qui ont été importée pour assurer le renaissance de la presse française. Ces dernières ont été remplacées dans les années 60 à 70. Donc pendant quelques années, certains journaux n'avaient pas d'accents dans les titres.

    A lire :
    http://www.deluxeavenue.com/typo_erreurs_cap.php

    Pour vous convaincre : La Revue de Paris, novembre 1900
    http://visualiseur.bnf.fr/Visualiseur?Destination=Gallica&O=NUMM-17458
    aller à la page 373 par exemple...

    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/ * * * * *

Discussions similaires

  1. [EXCEL] Majuscules accentuées
    Par larnicebafteur dans le forum Excel
    Réponses: 9
    Dernier message: 18/05/2009, 15h56
  2. Caractère majuscule accentué
    Par hynposat7 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 01/07/2008, 11h54
  3. [RegEx] Accepter les majuscules accentuées
    Par Trebor_ dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2008, 12h17
  4. [Système] Majuscules accentuées / strtoupper()
    Par rystio dans le forum Langage
    Réponses: 4
    Dernier message: 04/12/2006, 17h00
  5. J'ai trouvé l'origine du problème des majuscules accentuées sous FF!
    Par Médinoc dans le forum Evolutions du club
    Réponses: 14
    Dernier message: 28/07/2006, 16h13

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