将数据类型varchar转换为float时出错(SQL到oracle链接服务器)

将数据类型varchar转换为float时出错(SQL到oracle链接服务器),sql,oracle,linked-server,openquery,Sql,Oracle,Linked Server,Openquery,正在从另一台服务器成功上载相同的数据。背后的原因可能是什么 您的千位和十进制分隔符设置为什么?通过运行以下语句检查它们: SQL> select * From v$nls_parameters 2 where parameter = 'NLS_NUMERIC_CHARACTERS'; PARAMETER VALUE ------------------------------ ---------- NLS_NUMERIC_CHARACTER

正在从另一台服务器成功上载相同的数据。背后的原因可能是什么

您的千位和十进制分隔符设置为什么?通过运行以下语句检查它们:

SQL> select * From v$nls_parameters
  2  where parameter = 'NLS_NUMERIC_CHARACTERS';

PARAMETER                      VALUE
------------------------------ ----------
NLS_NUMERIC_CHARACTERS         ,.
它说——在我的数据库中——逗号是十进制字符,而点是千位分隔符。例如:

SQL> select 5/2 result from dual;

    RESULT
----------
       2,5
因此,如果源数据包含与设置不同的分隔符,则可能会导致错误。在Oracle中,您可以将其修复为

SQL> alter session set nls_numeric_characters = '.,';

Session altered.

SQL> select 5/2 result from dual;

    RESULT
----------
       2.5

尽管如此,您发布的消息不是标准的Oracle ORA-xxxxx错误消息,因此您可能需要在该端(即不是在Oracle端)对其进行修复。

也许字符列正在转换为数字,但它并不表示有效的数字。当然,这只是猜测。我没有发现任何这样的错误:如果你能找到,请检查样本数据