gpt4 book ai didi

sql - ORA-01722: 号码无效

转载 作者:行者123 更新时间:2023-12-02 15:42:54 25 4
gpt4 key购买 nike

当我执行以下使用单引号输入数字的 SQL 命令时,出现错误如果删除单引号,则更新成功。知道字段 HEIGHT 的类型是 NUMBER。

奇怪的是,我尝试在不同的机器上使用同一 strip 单引号的sql语句,有的机器执行成功,有的机器执行失败。(相同的oracle版本,相同的表结构...)

请解释一下

SQL>  UPDATE TBL_DEVICE_INFO SET HEIGHT='14.5'  WHERE ID='6ujbfI';
UPDATE TBL_DEVICE_INFO SET HEIGHT='14.5' WHERE ID='6ujbfI'
*
ERREUR à la ligne 1 :
ORA-01722: invalid number



SQL> UPDATE TBL_DEVICE_INFO SET HEIGHT=14.5 WHERE ID='6ujbfI';

1 row updated.

最佳答案

这很可能是语言环境问题。

也就是有的机器有小数点符号“.” (句点),有些带有“,”(逗号)。

你可以这样测试:

UPDATE TBL_DEVICE_INFO 
SET HEIGHT = to_number('14.5', '99D9','NLS_NUMERIC_CHARACTERS = ''. ''')
WHERE ID='6ujbfI'

当数字是单引号时,oracle会使用数据库中设置的字符隐式转换为数字。

您可以通过设置 NLS_NUMERIC_CHARACTERS 参数来更改默认值:

alter session set NLS_NUMERIC_CHARACTERS = '. ';

但这也会反射(reflect)到系统返回的数据中,因此请确保如果您更改它不会破坏您的应用程序中的任何内容。

关于sql - ORA-01722: 号码无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1432163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com