Oracle ODP.NET批量拷贝号格式问题

Oracle ODP.NET批量拷贝号格式问题,oracle,bulkinsert,odp.net,Oracle,Bulkinsert,Odp.net,我正在使用ODP.NET BulkCopy将数据从dataTable复制到oracle数据库表。 在我的datatable中,字段是字符串,因此数字可以表示为“123456789.111”(正确的格式)或“123.456.789111”(datatable中可能出现的incoct格式)。 在这种情况下,我希望在数据库中插入转换的数据。 有没有一种方法可以使用BulkCopy来实现这一点,或者我必须解析dataTable并手动转换所有错误的值 谢谢大家! 我想更好的方法是将数字存储为数字(因为这是

我正在使用ODP.NET BulkCopy将数据从dataTable复制到oracle数据库表。 在我的datatable中,字段是字符串,因此数字可以表示为“123456789.111”(正确的格式)或“123.456.789111”(datatable中可能出现的incoct格式)。 在这种情况下,我希望在数据库中插入转换的数据。 有没有一种方法可以使用BulkCopy来实现这一点,或者我必须解析dataTable并手动转换所有错误的值


谢谢大家!

我想更好的方法是将数字存储为数字(因为这是数字的正确数据类型)

在表示数字时,我会使用
来表示字符(,'999g999g999d999')

编辑:嗯,我想我现在明白了。这些数字的格式已经不正确了。我不知道你能不能用一个
箱子。。当
在您的过程中,但这可能会给您一个想法:

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;