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

Oracle Discussion :

[Sql] NLS_UPPER minuscules accentuées en majuscules


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [Sql] NLS_UPPER minuscules accentuées en majuscules
    Bonjour,
    mon problème :
    Convertir les minuscules accentuées en majuscules non accentuées, sans utilisée de liste de lettres accentuées (souci d'en oublier).

    bases oracles de travail 9.2

    voici la requête que j'essaie d'utiliser :
    "SELECT nls_upper('â','NLS_SORT = BINARY_AI')
    FROM DUAL;"

    or il semblerait que BINARY_AI éxiste que sous la version 10g,
    si quelqu'un pouvait essayer sous une version 10.
    Et si quelqu'un a une solution pour cette conversion (j'ai pensé en passant par l'unicode), ou alors si quelqu'un à une méthode de tri qui classe les lettre accentuée au même niveau que les lettres non accentuées.
    Merci d'avance.
    Cordialement Joël.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    pour moi le comportement est normal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SQL> SELECT nls_upper('â','NLS_SORT = BINARY_AI') 
      2  FROM DUAL;" 
      3  
    SQL> SELECT nls_upper('â','NLS_SORT = BINARY_AI') FROM DUAL; 
     
    N
    -
    Â
     
    SQL> show release 
    release 1001000200
    SQL>

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Personnellement, j'utilise plutôt la fonction suivante (avec le résultat ci-joint) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT UPPER( CONVERT('eleëäêmAEîent', 'US7ASCII', 'WE8ISO8859P1'))   "Conversion" FROM DUAL;
     
    Conversion
    -------------
    ELEEAEMAEIENT

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Pedrassi
    Personnellement, j'utilise plutôt la fonction suivante (avec le résultat ci-joint) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT UPPER( CONVERT('eleëäêmAEîent', 'US7ASCII', 'WE8ISO8859P1'))   "Conversion" FROM DUAL;
     
    Conversion
    -------------
    ELEEAEMAEIENT
    malheureusement le résultat est :
    ele?<????mAE??ent
    existe-t-il des variables systemes à définir avant?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Je viens de consulter la documentation (version Oracle V8 ) de la fonction CONVERT (cf ci-dessous).
    J'ai l'impression que les "?" correspondent aux caractères de remplacement de la conversion, c'est donc peut être au niveau des tables de caractères qu'il faut jouer.
    Toutes les bases (V7, V8 ou V9) où j'effectue mes tests sont paramétrées avec le NLS_CHARACTERSET à "WE8DEC".
    Après test, la conversion marche aussi pour moi en remplaçant "WE8ISO8859P1" par "WE8DEC".

    CONVERT converts a character string from one character set to another.
    * The char argument is the value to be converted.
    * The dest_char_set argument is the name of the character set to which char is converted.
    * The source_char_set argument is the name of the character set in which char is stored in the database. The default value is the database character set.

    Both the destination and source character set arguments can be either literals or columns containing the name of the character set.

    For complete correspondence in character conversion, it is essential that the destination character set contains a representation of all the characters defined in the source character set. Where a character does not exist in the destination character set, a replacement character appears. Replacement characters can be defined as part of a character set definition.

    Common character sets include:
    * US7ASCII: US 7-bit ASCII character set
    * WE8DECDEC: West European 8-bit character set
    * WE8HP: HP West European Laserjet 8-bit character set
    * F7DEC: DEC French 7-bit character set
    * WE8EBCDIC500: IBM West European EBCDIC Code Page 500
    * WE8PC850: IBM PC Code Page 850
    * WE8ISO8859P1: ISO 8859-1 West European 8-bit character set

Discussions similaires

  1. Conversion de minuscule accentuée en majuscule sans accent
    Par polothentik dans le forum Langage
    Réponses: 9
    Dernier message: 31/10/2017, 09h35
  2. Réponses: 5
    Dernier message: 29/01/2015, 12h43
  3. Accentuation des majuscules
    Par MoutMout95 dans le forum jQuery
    Réponses: 0
    Dernier message: 09/02/2014, 19h16
  4. [W-00] Accentuer les majuscules.
    Par chouchou_82 dans le forum Word
    Réponses: 4
    Dernier message: 18/02/2009, 22h05
  5. SQL : remplacer des minuscules accentuées
    Par exile50 dans le forum SQL
    Réponses: 4
    Dernier message: 26/12/2005, 08h21

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