【发布时间】:2016-03-03 19:37:54
【问题描述】:
插入 SQL:
INSERT INTO TB.SDL
(
SOL_ID,
LOCKER_TYPE,
LOCKER_NO,
CUST_ID,
STAFF_FLG,
RENT_AMOUNT_CHARGED,
PERCENT_RENT,
START_DATE,
LCHG_TIME,
LCHG_USER_ID,
RCRE_TIME,
RCRE_USER_ID,
DEL_FLG,
BANK_ID
)
VALUES
(
'42' ,
'KUK' ,
'KU19' ,
'00080' ,
'N',
'49.50' ,
'33,33',
sysdate,
sysdate,
'AAY' ,
sysdate,
'AAY' ,
'N',
'01'
);
错误:
-ORA-01722:无效号码
INSERT INTO TB.SDL
(
SOL_ID,
LOCKER_TYPE,
LOCKER_NO,
CUST_ID,
STAFF_FLG,
RENT_AMOUNT_CHARGED,
PERCENT_RENT,
START_DATE,
LCHG_TIME,
LCHG_USER_ID,
RCRE_TIME,
RCRE_USER_ID,
DEL_FLG,
BANK_ID
)
VALUES
(
'42' ,
'KUK' ,
'KU19' ,
'00080' ,
'N',
49.50 ,
'33,33',
sysdate,
sysdate,
'AAY' ,
sysdate,
'AAY' ,
'N',
'01'
);
表格说明:
-1 行插入
我想在 percent_rent 列中插入 33,33,但它不允许我这样做。 请问为什么case1失败了?我也插入了列描述图像。
【问题讨论】:
-
'33.33' 是一个字符串,而不是一个数字。
-
您传递的是字符串而不是数字。另外,尝试使用点作为小数分隔符(而不是逗号):33.3
-
在欧洲系统中,我们使用 33,33 作为分隔符,而不是 33.33,如果我输入 33,33 而没有引号,这将是一个问题,因为 sql 会认为它来分隔数字。
-
@Abid 您必须明确提及 NLS_NUMERIC_CHARACTERS 才能这样做。
标签: sql oracle oracle11g sql-insert number-formatting