База данных H2 — десятичный разделитель

#sql #database #h2

#sql #База данных #h2

Вопрос:

Я пытаюсь импортировать некоторые данные из Oracle в H2. У меня есть таблица с номером типа столбца (15,3) и вставить скрипт со значением ‘13253,124’ для этого столбца.

Проблема в том, что H2 не может распознать запятую как десятичный разделитель и не может вставить строку…

Есть ли способ сказать H2 «использовать запятую в качестве десятичного разделителя вместо точки»?

Спасибо

Комментарии:

1. Просто преобразуйте его при импорте (или попросите Oracle указать его с точкой)..

Ответ №1:

Вам нужно использовать точку или, что еще лучше, использовать PreparedStatement with setBigDecimal .

То, что вы пытаетесь, также не работает в Oracle с настройками по умолчанию. Я могу ошибаться, но я думаю, что это не работает ни с какой общей базой данных. Тестовый пример (с использованием SQLFiddle с Oracle):

 create table test(x number(15,3)); 

insert into test values('13253,124');
-> invalid number : insert into test values('13253,124')

insert into test values(13253,124);
-> too many values : insert into test values(13253,124)
  

Комментарии:

1. ну, это был файл экспорта oracle sqldeveloper из базы данных oracle, содержащий запятую вместо точки для десятичного разделителя…

2. Хорошо, я предполагаю, что это ошибка экспорта Oracle SQLDeveloper.

3. Неправильно, в Oracle вы можете использовать оба десятичных разделителя, проверьте настройки NLS_NUMERIC_CHARACTERS в Oracle docs.oracle.com/cd/B19306_01/server.102/b14237 /…

4. @MikeAdamenko обратите внимание, что я написал «с настройками по умолчанию»

5. @ThomasMueller Ну, настройки по умолчанию для NLS_NUMERIC_CHARACTERS зависят от операционной системы