Проблема с форматом чисел Oracle ODP.NET BulkCopy - PullRequest
0 голосов
/ 16 февраля 2011

Я использую ODP.NET BulkCopy для копирования данных из таблицы данных в таблицу базы данных оракула.В моей таблице данных поля строковые, поэтому число может быть представлено как «123 456 789,111» (правильный формат) или «123 456 789 111» (неподходящий формат, который может встречаться в таблице данных).Я хотел бы, чтобы в этой ситуации данные вставлялись в БД.Есть ли способ, которым я могу использовать BulkCopy для этого, или мне нужно проанализировать dataTable и вручную преобразовать все неправильные значения?

Спасибо!

1 Ответ

0 голосов
/ 16 февраля 2011

Полагаю, лучшим подходом было бы хранить числа как числа (потому что этот является правильным типом данных для чисел).

Когда дело доходит до представления чисел, я бы использовал to_char(<number goes here>, '999g999g999d999').

Редактировать : Ну, я думаю, я понял это сейчас. Числа уже в неправильном формате. Я не знаю, можете ли вы использовать case .. when в своем процессе, но это может дать вам представление:

with data_table as (
  select '123,456,789.111' as n from dual union all
  select         '789.111' as n from dual union all
  select          '-2.345' as n from dual union all
  select '777.777.777,777' as n from dual
) select
case when
  n like '%.%,%' 
    then to_number(n, '999g999g999d999', 'nls_numeric_characters='',.''') 
    else to_number(n, '999g999g999d999', 'nls_numeric_characters=''.,''') 
  end
from data_table; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...