to_number nl_NL.utf8
| От | Erik Rijkers |
|---|---|
| Тема | to_number nl_NL.utf8 |
| Дата | |
| Msg-id | 4da5ec27260a33ce8b9ec8b031e6e4c1.squirrel@webmail.xs4all.nl обсуждение исходный текст |
| Ответы |
Re: to_number nl_NL.utf8
|
| Список | pgsql-bugs |
Dutch locale uses a , as thousand separator, and . as decimal separator.
So to_number( '1.234,55' , '999G999D99')
should return 1234.55
but:
set session lc_numeric to 'nl_NL.utf8';
select
current_setting('server_version_num') server_num
, current_setting('lc_numeric') lc_numeric
, amt
, to_number(amt, '999G999D99')
from (values
('1.234,55')
, ('100,00')
)
as f(amt)
server_num | lc_numeric | amt | to_number
------------+------------+----------+-----------
90400 | nl_NL.utf8 | 1.234,55 | 124.55
90400 | nl_NL.utf8 | 100,00 | 10000
(2 rows)
It easy to work around: translate( '1.234,55' , ',.', '.' )::numeric ,
but it'd be nice if it could be fixed.
FWIW, behaviour of some older versions:
$ ./lc_numeric_bug.sh
server_num | lc_numeric | amt | to_number
------------+------------+----------+-----------
90400 | nl_NL.utf8 | 1.234,55 | 124.55
90400 | nl_NL.utf8 | 100,00 | 10000
(2 rows)
server_num | lc_numeric | amt | to_number
------------+------------+----------+-----------
90302 | nl_NL.utf8 | 1.234,55 | 124.55
90302 | nl_NL.utf8 | 100,00 | 10000
(2 rows)
server_num | lc_numeric | amt | to_number
------------+------------+----------+-----------
90206 | nl_NL.utf8 | 1.234,55 | 1.24
90206 | nl_NL.utf8 | 100,00 | 10000
(2 rows)
Thanks,
Erik Rijkers
В списке pgsql-bugs по дате отправления: