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 Conversion chiffre en lettre


Sujet :

Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut SQL Conversion chiffre en lettre
    Bonjour,

    Existe t il une fonction dans sql permettant de convertir un nombre en lettres?
    Exemple: "1200" devient "mille deux cent"
    Merci d'avance

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    il n'y a pas ce genre de fonction en français, seulement en anglais avec quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select to_char(to_timestamp('000001200','FF'),'ffsp') from dual
     
    TO_CHAR(TO_TIMESTAMP('000001200','FF'),'FFSP')                                
    -------------------------------------------------
    one thousand two hundred
    dans le tutorial Oracle tu trouveras une fonction qui devrait bien te servir...

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    par contre, va falloir que je m'occupe du bug de la virgule et des problèmes d'orthographe

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    j'ai corrigé le bug des zeros, la page source sera mise à jour très vite :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    CREATE OR REPLACE FUNCTION to_word_en(pn$nombre IN NUMBER) 
       RETURN VARCHAR2 
    AS 
       -- 
       TYPE table_varchar IS TABLE OF VARCHAR2 (255); 
     
       -- 
       lv$multiples table_varchar  := table_varchar ('', 
                                      ' thousand ', 
                                      ' million ', 
                                      ' billion ', 
                                      ' trillion ', 
                                      ' quadrillion ', 
                                      ' quintillion ', 
                                      ' sextillion ', 
                                      ' septillion ', 
                                      ' octillion ', 
                                      ' nonillion ', 
                                      ' decillion ', 
                                      ' undecillion ', 
                                      ' duodecillion ', 
                                      ' tridecillion ', 
                                      ' quaddecillion ', 
                                      ' quindecillion ', 
                                      ' sexdecillion ', 
                                      ' septdecillion ', 
                                      ' octdecillion ', 
                                      ' nondecillion ', 
                                      ' dedecillion ' 
                                      ); 
     
       lv$entier           VARCHAR2 (255) := TRUNC (TO_NUMBER (REPLACE (pn$nombre, ' ', ''))); 
       lv$decimales        VARCHAR2 (255) := SUBSTR (pn$nombre - lv$entier, 2); 
       lv$mots_complets    VARCHAR2 (4000); 
       lv$entier_lettres   VARCHAR2 (4000); 
       lv$nb_zero		   INTEGER;
    BEGIN 
     
       -- 
       -- Traitement de la partie décimale 
       -- 
       IF NVL (lv$decimales, 0) != 0 
       THEN 
         FOR i IN 1 .. lv$multiples.COUNT 
         LOOP 
           EXIT WHEN lv$decimales IS NULL; 
     
           -- 
          IF (SUBSTR (lv$decimales, LENGTH (lv$decimales) - 2, 3) <> 0) 
            THEN 
             lv$mots_complets := 
                    TO_CHAR (TO_DATE (SUBSTR (lv$decimales, 
                                                LENGTH (lv$decimales) - 2, 
                                                3 
                                               ), 
                                        'j' 
                                       ), 
                               'jsp' 
                              ) 
                   || lv$multiples (i) 
                   || lv$mots_complets; 
            END IF; 
     
            lv$decimales := SUBSTR (lv$decimales, 1, LENGTH (lv$decimales) - 3); 
         END LOOP; 
     
         lv$nb_zero := instr(translate(SUBSTR (pn$nombre - lv$entier, 2),'123456789','x'),'x')-1;
    	 dbms_output.put_line(lv$decimales);
    	 IF lv$nb_zero > 0 THEN
    	   FOR i IN 1..lv$nb_zero LOOP
    	     lv$mots_complets := 'zero ' || lv$mots_complets;
           END LOOP;
         END IF;
    	 -- Annonce la décimale (remplacer par Euro pour les montants en euros par exemple) 
          lv$mots_complets := ' point ' || lv$mots_complets; 
     
       END IF; 
     
       -- 
       -- Traitement de la partie entière 
       -- 
       IF NVL (lv$entier, 0) = 0 
       THEN 
          lv$mots_complets := 'zero' || lv$mots_complets; 
       ELSE 
          FOR i IN 1 .. lv$multiples.COUNT 
          LOOP 
             EXIT WHEN lv$entier IS NULL; 
     
             -- 
             IF (SUBSTR (lv$entier, LENGTH (lv$entier) - 2, 3) <> 0) 
             THEN 
                lv$mots_complets := 
                      TO_CHAR (TO_DATE (SUBSTR (lv$entier, LENGTH (lv$entier) - 2, 
                                                3), 
                                        'j' 
                                       ), 
                               'jsp' 
                              ) 
                   || lv$multiples (i) 
                   || lv$mots_complets; 
             END IF; 
     
             lv$entier := SUBSTR (lv$entier, 1, LENGTH (lv$entier) - 3); 
          END LOOP; 
       END IF; 
     
       RETURN lv$mots_complets; 
    END to_word_en; 
    /
    Edit : la page source est à jour et le pluriel était déjà OK

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    moi je dirais quatre-vingt mille sans s à vingt

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ha oui... mais quatre-vingts-millions

    d'ailleurs, le trait d'union est aussi manquant

  9. #9
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je travaille sous SQL server.
    Avez vous cette fonction déjà codée en Transact-SQL? Je ne connais pas les équivalences des fonctions en Oracle

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    tu as vu que tu étais dans le forum Oracle ?

    Eventuellement tu peut solliciter un membre du forum SQL Server pour qu'il fasse une "traduction" T-SQL

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    bonjour
    d’abord merci pour ces efforts
    juste une petite contribution
    1)
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF SUBSTR(lv$nombre_fr,1,8)='un mille' THEN
            lv$nombre_fr := SUBSTR(lv$nombre_fr,4);
        END IF;
    Moi j’ai juste ajouté un REPLACE

    ………….
    , 'cent un mille' , 'cent un mille' ) 
    , ’un cent’ , ‘cent’ )
    , ‘un mille’ , ‘mille’ )
    ……..
    A première vue on dira que ca marche pas parce qu’un autre replace changera le ‘un mille’ en ‘mille’ et le problème reste le même,
    mais si on regarde bien il ya deux espace entre ‘un ‘ et ‘mille’ 'cent un mille'


    2)
    pour les zéros ca dépendra de l’utilisation de cette fonction
    si c’est pour les monnaies c’est inutile
    car 1,03 => un euro et trois centimes on dis pas un euro et zéro trois centimes
    une mise en garde pour l’utilisation de la fonction to_word_en pour la conversion des monnaies
    le 2eme paramètre devra être fixé a 2.
    Pour cela j’ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lv$decimales        VARCHAR2(255) := SUBSTR (pn$nombre - lv$entier, 2);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lv$decimales        VARCHAR2 (255) := SUBSTR (to_char(pn$nombre - lv$entier,'9D00'), -pn$precision);
    je sais que vous avez déjà compris l’intérêt.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Cela fonctionne bien mais j'ai un petit soucis avec des nombres comme 100.20
    ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > select to_word_en(1000.20) from dual
    one thousand point two
    alors que je m'attends à one thousand point twenty car avec des montants, c'est vingt centimes et pas deux centimes

    le soucis semble venir du TO_NUMBER qui tronque la partie après la virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > select TO_NUMBER(1000.20) from dual;
    1000,2
    Si quelqu'un a des idées, je suis preneur
    merci,

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 56
    Points : 137
    Points
    137
    Par défaut
    Deux centimes serait "one thousand point zero two". Ne pas confontre "10.2 euros" et "10 euro et 2 centimes" (qui s'écrit 10.02 euros) !

    J'ai le même problème avec une demande de x euro(s) et y centime(s). Il faut alors faire 2 traductions : partie entière puis partie décimal*100.

    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
    16
    CREATE OR REPLACE FUNCTION montant_en_toutes_lettres(pn$nombre IN VARCHAR2) 
    RETURN VARCHAR2
    AS 
        lv$entier           NUMBER  := TRUNC( TO_NUMBER( REPLACE(pn$nombre, ' ', ''))); 
        lv$decimales        NUMBER  := (pn$nombre - lv$entier) *100; 
        lv$mots_complets    VARCHAR2 (4000) := null; 
    BEGIN
        --
        lv$mots_complets := translate_fr(to_word_en(lv$entier)) || ' euro';
        IF lv$entier>1 THEN lv$mots_complets := lv$mots_complets || 's'; end if;
        --
        lv$mots_complets := lv$mots_complets || ' et ' || translate_fr(to_word_en(lv$decimales)) || ' centime';
        IF lv$decimales>1 THEN lv$mots_complets := lv$mots_complets || 's'; end if;
        -- 
        RETURN trim(regexp_replace(lv$mots_complets,'\s+',' ')); 
    END ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select montant_en_toutes_lettres(1000.20) from dual
    mille euros et vingt centimes

  14. #14
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 56
    Points : 137
    Points
    137
    Par défaut
    Petites corrections pour prendre en compte les nombres négatifs, et sur la traduction de "un mille" en "mille".

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    CREATE OR REPLACE FUNCTION GESSI.to_word_en(pn$nombre IN NUMBER) 
       RETURN VARCHAR2 
    AS 
       --    
       TYPE table_varchar IS TABLE OF VARCHAR2 (255); 
       -- 
       lv$multiples table_varchar  := table_varchar ('', 
                                      ' thousand ', 
                                      ' million ', 
                                      ' billion ', 
                                      ' trillion ', 
                                      ' quadrillion ', 
                                      ' quintillion ', 
                                      ' sextillion ', 
                                      ' septillion ', 
                                      ' octillion ', 
                                      ' nonillion ', 
                                      ' decillion ', 
                                      ' undecillion ', 
                                      ' duodecillion ', 
                                      ' tridecillion ', 
                                      ' quaddecillion ', 
                                      ' quindecillion ', 
                                      ' sexdecillion ', 
                                      ' septdecillion ', 
                                      ' octdecillion ', 
                                      ' nondecillion ', 
                                      ' dedecillion ' 
                                      ); 
     
     
       lv$entier           VARCHAR2 (255) := TRUNC (TO_NUMBER (REPLACE (abs(pn$nombre), ' ', ''))); 
       lv$decimales        VARCHAR2 (255) := SUBSTR (abs(pn$nombre) - lv$entier, 2); 
       lv$mots_complets    VARCHAR2 (4000); 
       lv$entier_lettres   VARCHAR2 (4000); 
       lv$nb_zero		   INTEGER;
    BEGIN 
     
       -- 
       -- Traitement de la partie décimale 
       -- 
       IF NVL (lv$decimales, 0) != 0 
       THEN 
         FOR i IN 1 .. lv$multiples.COUNT 
         LOOP 
           EXIT WHEN lv$decimales IS NULL; 
     
           -- 
          IF (SUBSTR (lv$decimales, LENGTH (lv$decimales) - 2, 3) <> 0) 
            THEN 
             lv$mots_complets := 
                    TO_CHAR (TO_DATE (SUBSTR (lv$decimales, 
                                                LENGTH (lv$decimales) - 2, 
                                                3 
                                               ), 
                                        'j' 
                                       ), 
                               'jsp' 
                              ) 
                   || lv$multiples (i) 
                   || lv$mots_complets; 
            END IF; 
     
            lv$decimales := SUBSTR (lv$decimales, 1, LENGTH (lv$decimales) - 3); 
         END LOOP; 
     
         lv$nb_zero := instr(translate(SUBSTR (abs(pn$nombre) - lv$entier, 2),'123456789','x'),'x')-1;
    	 dbms_output.put_line(lv$decimales);
    	 IF lv$nb_zero > 0 THEN
    	   FOR i IN 1..lv$nb_zero LOOP
    	     lv$mots_complets := 'zero ' || lv$mots_complets;
           END LOOP;
         END IF;
    	 -- Annonce la décimale (remplacer par Euro pour les montants en euros par exemple) 
          lv$mots_complets := ' point ' || lv$mots_complets; 
     
       END IF; 
     
       -- 
       -- Traitement de la partie entière 
       -- 
       IF NVL (lv$entier, 0) = 0 
       THEN 
          lv$mots_complets := 'zero' || lv$mots_complets; 
       ELSE 
          FOR i IN 1 .. lv$multiples.COUNT 
          LOOP 
             EXIT WHEN lv$entier IS NULL; 
     
             -- 
             IF (SUBSTR (lv$entier, LENGTH (lv$entier) - 2, 3) <> 0) 
             THEN 
                lv$mots_complets := 
                      TO_CHAR (TO_DATE (SUBSTR (lv$entier, LENGTH (lv$entier) - 2, 
                                                3), 
                                        'j' 
                                       ), 
                               'jsp' 
                              ) 
                   || lv$multiples (i) 
                   || lv$mots_complets; 
             END IF; 
     
             lv$entier := SUBSTR (lv$entier, 1, LENGTH (lv$entier) - 3); 
          END LOOP; 
       END IF; 
     
       IF pn$nombre<0 THEN
          lv$mots_complets := 'minus ' || lv$mots_complets;
       END IF;
     
       RETURN lv$mots_complets; 
    END to_word_en;
    /
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    CREATE OR REPLACE FUNCTION GESSI.translate_fr(pn$nombre_en IN VARCHAR2) 
    RETURN VARCHAR2 
    AS
        lv$nombre_fr VARCHAR2(255); 
    BEGIN 
        lv$nombre_fr := REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
                                                   pn$nombre_en 
                                                 , 'minus'             , 'moins'           )
                                                 , 'million'           , 'millions'        ) 
                                                 , 'billion'           , 'milliards'       ) 
                                                 , 'trillion'          , 'trillions'       ) 
                                                 , 'quadrillion'       , 'quadrillions'    ) 
                                                 , 'quintillion'       , 'cintillions'     ) 
                                                 , 'sextillion'        , 'sextillions'     )    
                                                 , 'septillion'        , 'septillions'     )  
                                                 , 'octillion'         , 'octillions'      ) 
                                                 , 'nonillion'         , 'nonillions'      )  
                                                 , 'decillion'         , 'decillions'      )  
                                                 , 'thousand'          , 'mille'           ) 
                                                 , 'hundred'           , 'cent'            ) 
                                                 , 'ninety'            , 'quatre-vingt-dix') 
                                                 , 'eighty'            , 'quatre-vingts'   ) 
                                                 , 'seventy'           , 'soixante-dix'    ) 
                                                 , 'sixty'             , 'soixante'        ) 
                                                 , 'fifty'             , 'cinquante'       ) 
                                                 , 'forty'             , 'quarante'        ) 
                                                 , 'thirty'            , 'trente'          ) 
                                                 , 'twenty'            , 'vingt'           ) 
                                                 , 'nineteen'          , 'dix-neuf'        ) 
                                                 , 'eighteen'          , 'dix-huit'        ) 
                                                 , 'seventeen'         , 'dix-sept'        ) 
                                                 , 'sixteen'           , 'seize'           ) 
                                                 , 'fifteen'           , 'quinze'          ) 
                                                 , 'fourteen'          , 'quatorze'        ) 
                                                 , 'thirteen'          , 'treize'          ) 
                                                 , 'twelve'            , 'douze'           ) 
                                                 , 'eleven'            , 'onze'            ) 
                                                 , 'ten'               , 'dix'             ) 
                                                 , 'nine'              , 'neuf'            ) 
                                                 , 'eight'             , 'huit'            ) 
                                                 , 'seven'             , 'sept'            ) 
                                                 , 'five'              , 'cinq'            ) 
                                                 , 'four'              , 'quatre'          ) 
                                                 , 'three'             , 'trois'           ) 
                                                 , 'two'               , 'deux'            ) 
                                                 , 'one'               , 'un'              ) 
                                                 , 'dix-six'           , 'seize'           ) 
                                                 , 'dix-cinq'          , 'quinze'          ) 
                                                 , 'dix-quatre'        , 'quatorze'        ) 
                                                 , 'dix-trois'         , 'treize'          ) 
                                                 , 'dix-deux'          , 'douze'           ) 
                                                 , 'dix-un'            , 'onze'            ) 
                                                 , '-un '              , '-une '           ) 
                                                 , 'un cent'           , 'cent'            ) 
                                                 , 'une'               , 'un'              ) 
                                                 , 'soixante-onze'     , 'soixante et onze') 
                                                 , 'quatre-vingts-'    , 'quatre-vingt-'   ) 
                                                 , '-un'               , ' et un'          ) 
                                                 , 'quatre-vingt et un', 'quatre-vingt-un' ) 
                                                 , 'deux cent'         , 'deux cents'      ) 
                                                 , 'trois cent'        , 'trois cents'     ) 
                                                 , 'quatre cent'       , 'quatre cents'    ) 
                                                 , 'cinq cent'         , 'cinq cents'      ) 
                                                 , 'six cent'          , 'six cents'       ) 
                                                 , 'sept cent'         , 'sept cents'      ) 
                                                 , 'huit cent'         , 'huit cents'      ) 
                                                 , 'neuf cent'         , 'neuf cents'      ) 
                                                 , 'cents '            , 'cent '           ) 
                                                 , 'un mille'          , 'mille'           )
                                                 , 'vingts mille'      , 'vingt mille'     )
                                                 , 'un millions'       , 'un million'      ) 
                                                 , 'un bidecillions'   , 'un bidecillion'  ) 
                                                 , 'un cintillions'    , 'un cintillion'   ) 
                                                 , 'un milliards'      , 'un milliard'     ) 
                                                 , 'un trillions'      , 'un trillion'      ) 
                                                 , 'un quadrillions'   , 'un quadrillion'   ) 
                                                 , 'un sextillions'    , 'un sextillion'    )    
                                                 , 'un septillions'    , 'un septillion'    )  
                                                 , 'un octillions'     , 'un octillion'     ) 
                                                 , 'un nonillions'     , 'un nonillion'     )  
                                                 , 'un decillions'     , 'un decillion'     )  
                                                 , 'un undecillions'   , 'un undecillion'   )  
                                                 , 'un duodecillions'  , 'un duodecillion'  )  
                                                 , 'un tridecillions'  , 'un tridecillion'  )  
                                                 , 'un quaddecillions' , 'un quaddecillion' )  
                                                 , 'un quindecillions' , 'un quindecillion' )  
                                                 , 'un sexdecillions'  , 'un sexdecillion'  )  
                                                 , 'un septdecillions' , 'un septdecillion' )  
                                                 , 'un octdecillions'  , 'un octdecillion'  )  
                                                 , 'un nondecillions'  , 'un nondecillion'  )  
                                                 , 'un dedecillions'   , 'un dedecillion'   )  
                                                 , '-un trillion'      , '-un trillions'     ) 
                                                 , '-un quadrillion'   , '-un quadrillions'  ) 
                                                 , '-un sextillion'    , '-un sextillions'   )    
                                                 , '-un septillion'    , '-un septillions'   )  
                                                 , '-un octillion'     , '-un octillions'    ) 
                                                 , '-un nonillion'     , '-un nonillions'    )  
                                                 , '-un decillion'     , '-un decillions'    )  
                                                 , '-un undecillion'   , '-un undecillions'  )  
                                                 , '-un duodecillion'  , '-un duodecillions' )  
                                                 , '-un tridecillion'  , '-un tridecillions' )  
                                                 , '-un quaddecillion' , '-un quaddecillions')  
                                                 , '-un quindecillion' , '-un quindecillions')  
                                                 , '-un sexdecillion'  , '-un sexdecillions' )  
                                                 , '-un septdecillion' , '-un septdecillions')  
                                                 , '-un octdecillion'  , '-un octdecillions' )  
                                                 , '-un nondecillion'  , '-un nondecillions' )  
                                                 , '-un dedecillion'   , '-un dedecillions'  )  
                                                 , '-un million'       , '-un millions'    ) 
                                                 , '-un bidecillion'   , '-un bidecillions') 
                                                 , '-un cintillion'    , '-un cintillions' ) 
                                                 , '-un milliard'      , '-un milliards'   ) 
                                                 , 'point'             , 'virgule'         ) 
    					     ,'  ',' '); 
        IF SUBSTR(lv$nombre_fr,1,8)='un mille' THEN
            lv$nombre_fr := SUBSTR(lv$nombre_fr,4);
        END IF;
            IF lv$nombre_fr LIKE '% un %illion %' OR lv$nombre_fr LIKE '% un %illiard %' THEN
            lv$nombre_fr := 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
               REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( 
    										       lv$nombre_fr
                                                 , ' un trillion'      , ' un trillions'     ) 
                                                 , ' un quadrillion'   , ' un quadrillions'  ) 
                                                 , ' un sextillion'    , ' un sextillions'   )    
                                                 , ' un septillion'    , ' un septillions'   )  
                                                 , ' un octillion'     , ' un octillions'    ) 
                                                 , ' un nonillion'     , ' un nonillions'    )  
                                                 , ' un decillion'     , ' un decillions'    )  
                                                 , ' un undecillion'   , ' un undecillions'  )  
                                                 , ' un duodecillion'  , ' un duodecillions' )  
                                                 , ' un tridecillion'  , ' un tridecillions' )  
                                                 , ' un quaddecillion' , ' un quaddecillions')  
                                                 , ' un quindecillion' , ' un quindecillions')  
                                                 , ' un sexdecillion'  , ' un sexdecillions' )  
                                                 , ' un septdecillion' , ' un septdecillions')  
                                                 , ' un octdecillion'  , ' un octdecillions' )  
                                                 , ' un nondecillion'  , ' un nondecillions' )  
                                                 , ' un dedecillion'   , ' un dedecillions'  )  
                                                 , ' un million'       , ' un millions'    ) 
                                                 , ' un bidecillion'   , ' un bidecillions') 
                                                 , ' un cintillion'    , ' un cintillions' ) 
                                                 , ' un milliard'      , ' un milliards'   ) ;
        END IF;
        RETURN lv$nombre_fr; 
    END translate_fr;
    /

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 165
    Points : 1 963
    Points
    1 963
    Par défaut
    Hmm,

    Tu as déterré un sujet vieux de 13 ans

Discussions similaires

  1. Conversion chiffre en lettre
    Par agencep dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 10/04/2008, 17h38
  2. conversion chiffres en lettres
    Par djazair dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/07/2007, 19h24
  3. Réponses: 1
    Dernier message: 30/05/2007, 19h19
  4. conversion chiffre en lettre
    Par dejiein dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/06/2006, 10h50
  5. conversion chiffre en lettre
    Par arezki76 dans le forum Oracle
    Réponses: 3
    Dernier message: 17/12/2005, 13h31

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