Re: insert column monetary type ver 2
От | Adrian Klaver |
---|---|
Тема | Re: insert column monetary type ver 2 |
Дата | |
Msg-id | 0d15bb84-565a-0246-2b8f-a0e637239339@aklaver.com обсуждение исходный текст |
Ответ на | insert column monetary type ver 2 (Дмитрий Иванов <firstdismay@gmail.com>) |
Список | pgsql-general |
On 11/20/21 04:45, Дмитрий Иванов wrote: > Good afternoon. > Sorry about the first example. > I can't figure out the problem. Digit group group separator causes an > insertion error, what should I do? > lc_monetary = 'ru_RU.UTF-8' > Digit group group separator is a space. > Financial type format: 7,649.00 ₽ > DELETE FROM ONLY bpd.class_prop_user_small_val > WHERE id_class_prop = 74502; > Initial version of the data: > INSERT INTO bpd. class_prop_user_small_val (id_class_prop, > timestamp_class, val_int, val_boolean, val_varchar, val_real, > val_numeric, val_date, val_time, val_interval, val_timestamp, val_money, > val_double, max_val, round, id_class, id_data_type, inheritance, > val_bigint, min_val, max_on, min_on, round_on) VALUES (74502, > '2021-09-08 10: 05:12. 618', NULL, NULL, NULL, NULL, NULL, NULL, NULL, > NULL, NULL, '7 649.00 ₽', NULL, -1, 2, 6161, 6, false, 0, -1, false, > false, true); > ---------- > ERROR: invalid input syntax for type money: "7 649,00 ₽" LINE 6: ..., > NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '7 649,00 ... > Corrected > INSERT INTO bpd. class_prop_user_small_val (id_class_prop, > timestamp_class, val_int, val_boolean, val_varchar, val_real, > val_numeric, val_date, val_time, val_interval, val_timestamp, val_money, > val_double, max_val, round, id_class, id_data_type, inheritance, > val_bigint, min_val, max_on, min_on, round_on) VALUES (74502, > '2021-09-08 10: 05:12. 618', NULL, NULL, NULL, NULL, NULL, NULL, NULL, > NULL, NULL, '7649.00 ₽', NULL, -1, 2, 6161, 6, false, 0, -1, false, > false, true); > ----------- > INSERT 0 1 > > Why does a financial type conversion with a legal regional digit group > separator cause an error? Because this(cash.c): https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/utils/adt/cash.c;h=d093ce80386f4cf61f3127f3cfe77181f4edfed5;hb=HEAD has this?: /* cash_in() 91 * Convert a string to a cash data type. 92 * Format is [$]###[,]###[.##] 93 * Examples: 123.45 $123.45 $123,456.78 94 * 95 */ The 1000s(group) separator is determined by LC_NUMERIC and I don't believe that is used by the money type. -- Adrian Klaver adrian.klaver@aklaver.com
В списке pgsql-general по дате отправления: