在oracle中写数字

时间:2015-02-26 13:49:20

标签: sql oracle

在SQL开发人员中我试图将数据插入表中,我在pricesale price收到错误,其中我使用900.99作为数字。

INSERT INTO BIKES (MANUFACTURER_NAME, DEALER_NAME, BIKE_SIZE,
                   CLASSIFICATION, BIKE_ID, MODELS, PURCHASE_DATE,
                   PRICE, SALE_PRICE, SALE_DATE)
VALUES ('Superbike', 'Big Steve', 'Large male',
        'Mountain', 0884621 , 'Speed Demon X1', '15/Jan/14',
        900.99, 900.99, '25/Feb/14');

我正在使用这些边界:

PRICE number(6,2) CONSTRAINT PRICE_NN NOT NULL,
SALE_PRICE number(6,2) CONSTRAINT SALE_PRICE_NN NOT NULL,

很抱歉这个简单的问题 - 最近才开始使用SQL。

- Edit-- 这是完整的表格:

CREATE TABLE BIKES (
MANUFACTURER_NAME VARCHAR2 (100),
DEALER_NAME VARCHAR2 (100),
BIKE_SIZE  VARCHAR2 (15),
CLASSIFICATION  VARCHAR2 (15),
BIKE_ID NUMBER (7),
PRIMARY KEY (BIKE_ID),
MODELS NUMBER(7) CONSTRAINT SIZE_NN NOT NULL,
PURCHASE_DATE DATE CONSTRAINT PURCHASE_DATE_NN NOT NULL,
PRICE number(6,2) CONSTRAINT PRICE_NN NOT NULL,
SALE_PRICE number(6,2) CONSTRAINT SALE_PRICE_NN NOT NULL,
SALE_DATE DATE CONSTRAINT SALE_DATE_NN NOT NULL,
FOREIGN KEY (MANUFACTURER_NAME) REFERENCES MANUFACTURER(MANUFACTURER_NAME),
FOREIGN KEY (DEALER_NAME) REFERENCES DEALER(DEALER_NAME),
FOREIGN KEY (CLASSIFICATION, BIKE_SIZE)
  REFERENCES BIKE_SPECS(CLASSIFICATION, BIKE_SIZE));

和错误消息:

Error starting at line 298 in command:
INSERT INTO BIKES( MANUFACTURER_NAME, DEALER_NAME, BIKE_SIZE, CLASSIFICATION, BIKE_ID, MODELS, PURCHASE_DATE, PRICE, SALE_PRICE, SALE_DATE)
VALUES ('Superbike','Big Steve','Large male','Mountain',0884621 ,'Speed Demon X1','15/Jan/14',900.99,900.99,'25/Feb/14')
Error report:
SQL Error: ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    
*Action:

2 个答案:

答案 0 :(得分:3)

  

型号(7)

     

' Speed Demon X1'

似乎上面的列数据类型NUMBER和作为字符串的值导致错误。

另一件事,

  

PURCHASE_DATE DATE

     

' 15 /月/ 14'

'15/Jan/14'不是 DATE ,而是字符串。将值括在单引号中时,它被视为字符串。您必须使用 TO_DATE 以及正确的 FORMAT MODEL 文字转换为日期。永远不要依赖内部数据类型转换

将文字转换为日期,例如:

to_date('15/Jan/14','DD/Mon/RR')

要添加关于 DATE 的更多信息,请始终将年份视为 YYYY ,而不仅仅是 YY 。你不必重新发明Y2K的bug。世界已经看到了后果,浪费了大量的收入来解决它。一年应该是2015而不是15

答案 1 :(得分:0)

似乎问题是NLS参数(NLS_NUMERIC_CHARACTERS)。

How NLS_NUMERIC_CHARACTERS parameter works

另一个关于NLS parameters的有用链接。