Citation Envoyé par laurentschneider Voir le message
un billiard ==> un quadrillion
SQL> select to_word_fr(1e33) from dual
un quintilliards ==> pas de s
SQL> select to_word_fr(1e36) from dual
un unquintilliards ==> sûrement pas... [/code]
C'est l'écriture pour l'échelle longue en vigueur en France

http://fr.wikipedia.org/wiki/Trilliard

http://fr.wikipedia.org/wiki/%C3%89c...9chelle_longue

Citation Envoyé par laurentschneider Voir le message


[code]SQL> select to_word_fr(1000.101001) from dual
un mille virgule cent un mille un ==> mille virgule...
SQL> select to_word_fr(1100000000) from dual
un milliard cents millions ==> pas de s à cent
Corrigé, en espérant ne pas avoir fait de régression... j'ai pas le temps de tout retester

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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
CREATE OR REPLACE FUNCTION translate_fr(pv$nombre_en IN VARCHAR2) 
RETURN VARCHAR2 
AS
   lv$nombre_fr VARCHAR2(4000); 
   lv$entier VARCHAR2(4000); 
   lv$decimale VARCHAR2(4000); 
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( 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( 		   
                                               pv$nombre_en 
                                             , 'million'           , 'millions'        ) 
                                             , 'billion'           , 'milliards'       ) 
                                             , 'trillion'          , 'billions'       ) 
                                             , 'quadrillion'       , 'billiards'    ) 
                                             , 'quintillion'       , 'trillions'     ) 
                                             , 'sextillion'        , 'trilliards'     )    
                                             , 'septillion'        , 'quadrillions'     )  
                                             , 'octillion'         , 'quadrilliards'      ) 
                                             , 'nonillion'         , 'quintillions'      )  
                                             , 'decillion'         , 'quintilliards'      )  
                                             , '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 '           ) 
                                             , 'vingts mille'      , 'vingt mille'     )
                                             , 'un millions'       , 'un million'      ) 
                                             , 'un bidecillions'   , 'un bidecillion'  ) 
                                             , 'un trillions'    , 'un trillion'   ) 
                                             , 'un milliards'      , 'un milliard'     ) 
                                             , 'un trillions'      , 'un billion'      ) 
                                             , 'un quadrillions'   , 'un billiard'   ) 
                                             , 'un trilliards'    , 'un trilliard'    )    
                                             , 'un quadrillions'    , 'un quadrillion'    )  
                                             , 'un quadrilliards'     , 'un quadrilliard'     ) 
                                             , 'un quintillions'     , 'un quintillion'     )  
                                             , '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 billions'     ) 
                                             , '-un quadrillion'   , '-un billiards'  ) 
                                             , '-un trilliard'    , '-un trilliards'   )    
                                             , '-un quadrillion'    , '-un quadrillions'   )  
                                             , '-un quadrilliard'     , '-un quadrilliards'    ) 
                                             , '-un quintillion'     , '-un quintillions'    )  
                                             , '-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 trillion'    , '-un trillions' ) 
                                             , '-un milliard'      , '-un milliards'   ) 
                                             , ' cent millions'       , ' cents millions'      ) 
                                             , ' cent bidecillions'   , ' cents bidecillions'  ) 
                                             , ' cent trillions'    , ' cents trillions'   ) 
                                             , ' cent milliards'      , ' cents milliards'     ) 
                                             , ' cent trillions'      , ' cents billions'      ) 
                                             , ' cent quadrillions'   , ' cents billiards'   ) 
                                             , ' cent trilliards'    , ' cents trilliards'    )    
                                             , ' cent quadrillions'    , ' cents quadrillions'    )  
                                             , ' cent quadrilliards'     , ' cents quadrilliards'     ) 
                                             , ' cent quintillions'     , ' cents quintillions'     )  
                                             , ' cent decillions'     , ' cents decillions'     )  
                                             , ' cent centdecillions' , ' cents centdecillions'   )  
                                             , ' cent duodecillions'  , ' cents duodecillions'  )  
                                             , ' cent tridecillions'  , ' cents tridecillions'  )  
                                             , ' cent quaddecillions' , ' cents quaddecillions' )  
                                             , ' cent quindecillions' , ' cents quindecillions' )  
                                             , ' cent sexdecillions'  , ' cents sexdecillions'  )  
                                             , ' cent septdecillions' , ' cents septdecillions' )  
                                             , ' cent octdecillions'  , ' cents octdecillions'  )  
                                             , ' cent nondecillions'  , ' cents nondecillions'  )  
                                             , ' cent dedecillions'   , ' cents dedecillions'   )  
                                             , 'et un million'       , 'et un millions'      ) 
                                             , 'et un bidecillion'   , 'et un bidecillions'  ) 
                                             , 'et un trillion'    , 'et un trillions'   ) 
                                             , 'et un milliard'      , 'et un milliards'     ) 
                                             , 'et un trillion'      , 'et un billions'      ) 
                                             , 'et un quadrillion'   , 'et un billiards'   ) 
                                             , 'et un trilliard'    , 'et un trilliards'    )    
                                             , 'et un quadrillion'    , 'et un quadrillions'    )  
                                             , 'et un quadrilliard'     , 'et un quadrilliards'     ) 
                                             , 'et un quintillion'     , 'et un quintillions'     )  
                                             , 'et un decillion'     , 'et un decillions'     )  
                                             , 'et un undecillion'   , 'et un undecillions'   )  
                                             , 'et un duodecillion'  , 'et un duodecillions'  )  
                                             , 'et un tridecillion'  , 'et un tridecillions'  )  
                                             , 'et un quaddecillion' , 'et un quaddecillions' )  
                                             , 'et un quindecillion' , 'et un quindecillions' )  
                                             , 'et un sexdecillion'  , 'et un sexdecillions'  )  
                                             , 'et un septdecillion' , 'et un septdecillions' )  
                                             , 'et un octdecillion'  , 'et un octdecillions'  )  
                                             , 'et un nondecillion'  , 'et un nondecillions'  )  
                                             , 'et un dedecillion'   , 'et un dedecillions'   )  
                                             , 'cent un million'       , 'cent un millions'      ) 
                                             , 'cent un bidecillion'   , 'cent un bidecillions'  ) 
                                             , 'cent un trillion'    , 'cent un trillions'   ) 
                                             , 'cent un milliard'      , 'cent un milliards'     ) 
                                             , 'cent un trillion'      , 'cent un billions'      ) 
                                             , 'cent un quadrillion'   , 'cent un billiards'   ) 
                                             , 'cent un trilliard'    , 'cent un trilliards'    )    
                                             , 'cent un quadrillion'    , 'cent un quadrillions'    )  
                                             , 'cent un quadrilliard'     , 'cent un quadrilliards'     ) 
                                             , 'cent un quintillion'     , 'cent un quintillions'     )  
                                             , 'cent un decillion'     , 'cent un decillions'     )  
                                             , 'cent un undecillion'   , 'cent un undecillions'   )  
                                             , 'cent un duodecillion'  , 'cent un duodecillions'  )  
                                             , 'cent un tridecillion'  , 'cent un tridecillions'  )  
                                             , 'cent un quaddecillion' , 'cent un quaddecillions' )  
                                             , 'cent un quindecillion' , 'cent un quindecillions' )  
                                             , 'cent un sexdecillion'  , 'cent un sexdecillions'  )  
                                             , 'cent un septdecillion' , 'cent un septdecillions' )  
                                             , 'cent un octdecillion'  , 'cent un octdecillions'  )  
                                             , 'cent un nondecillion'  , 'cent un nondecillions'  )  
                                             , 'cent un dedecillion'   , 'cent un dedecillions'   )  
                                             , 'point'             , 'virgule'         ) 
											 ,'  ',' '); 
 
 IF INSTR(lv$nombre_fr,'virgule') > 0 THEN
	  lv$entier   :=  SUBSTR(lv$nombre_fr, 1, INSTR(lv$nombre_fr,'virgule')-2);
	  lv$decimale :=  SUBSTR(lv$nombre_fr, INSTR(lv$nombre_fr,'virgule') - 1);
 	ELSE
      lv$entier := lv$nombre_fr;
	  lv$decimale :=  NULL;
    END IF;
 
    IF lv$entier LIKE '%un mille%' 
	 AND NOT (lv$entier LIKE '%cent% un mille%' OR lv$entier LIKE '%et un mille%' OR lv$entier LIKE '%-un mille%')
	 THEN
       lv$entier := REPLACE(lv$entier, 'un mille', 'mille');
    END IF;
 
    lv$nombre_fr := lv$entier || lv$decimale;
 
    IF lv$nombre_fr LIKE '%un mille%' 
	 AND NOT (lv$nombre_fr LIKE '%cent% un mille%' OR lv$nombre_fr LIKE '%et un mille%' OR lv$nombre_fr LIKE '%-un mille%')
	 THEN
       lv$nombre_fr := REPLACE(lv$nombre_fr, 'un mille', 'mille');
    END IF;
 
 	CASE 
		WHEN lv$nombre_fr LIKE '%ion cents%' THEN lv$nombre_fr := REPLACE(lv$nombre_fr, 'ion cents', 'ion cent');
		WHEN lv$nombre_fr LIKE '%ions cents%' THEN lv$nombre_fr := REPLACE(lv$nombre_fr, 'ions cents', 'ions cent');
		WHEN lv$nombre_fr LIKE '%iard cents%' THEN lv$nombre_fr := REPLACE(lv$nombre_fr, 'iard cents', 'iard cent');
		WHEN lv$nombre_fr LIKE '%iards cents%' THEN lv$nombre_fr := REPLACE(lv$nombre_fr, 'iards cents', 'iards cent');
		ELSE NULL;
	END CASE;
 
    IF lv$nombre_fr LIKE '%lion un mille%' OR lv$nombre_fr LIKE '%liard un mille%' OR lv$nombre_fr LIKE '%lions un mille%' OR lv$nombre_fr LIKE '%liards un mille%' 
	 THEN
       lv$nombre_fr := REPLACE(lv$nombre_fr, 'un mille', 'mille');
    END IF;
 
    RETURN lv$nombre_fr;
 
END translate_fr; 
/