【问题标题】:SQL Developer ORA-01858: a non-numeric character was found where a numeric was expected [duplicate]SQL Developer ORA-01858:在需要数字的地方发现了一个非数字字符[重复]
【发布时间】:2023-03-25 12:50:02
【问题描述】:

有一行我进不了表

CREATE TABLE CLIENTE(
RUT VARCHAR2(10) CONSTRAINT CLIENTE_PK PRIMARY KEY,
NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOM_CLIENTE NOT NULL,
APELLIDOP VARCHAR2(30) CONSTRAINT NOTNULL_APPEP_CLIENTE NOT NULL,
APELLIDOM VARCHAR2(30) CONSTRAINT NOTNULL_APPEM_CLIENTE NOT NULL,
DIRECCION VARCHAR2(100) CONSTRAINT NOTNULL_DIR_CLIENTE NOT NULL,
TELEFONO NUMBER(8) CONSTRAINT NOTNULL_FONO_CLIENTE NOT NULL,
EMAIL VARCHAR2(255) CONSTRAINT NOTNULL_MAIL_CLIENTE NOT NULL,
FECHA_NACIMIENTO DATE CONSTRAINT NOTNULL_NACIMIENTO_CLIENTE NOT NULL,
SEXO CHAR(1) CONSTRAINT NOTNULL_SEXO_CLIENTE NOT NULL,
COD_CIUDAD NUMBER(3) CONSTRAINT NOTNULL_COD_CIUDAD NOT NULL,
CONSTRAINT CLIENTE_CIUDAD_FK FOREIGN KEY (COD_CIUDAD) REFERENCES CIUDAD (COD_CIUDAD)
);

这是唯一不能进入的行

INSERT INTO CLIENTE VALUES('08798234-9','Luis','Garcia','Ramirez','Málaga 753',78452378,'lgarcia@gmail.com','12-APR-1977','M',1);

错误:

INSERT INTO CLIENTE VALUES
('08798234-9','Luis','Garcia','Ramirez','Málaga 753',78452378,'lgarcia@gmail.com','12-APR-1977','M',1)
Informe de error -
ORA-01858: a non-numeric character was found where a numeric was expected

【问题讨论】:

  • 我希望那不是真实数据,是吗?
  • @Gary_W 真实数据如何?
  • 您刚刚发布了某人的实际电话号码和电子邮件地址吗?除此之外,请检查您的默认日期格式是否正确。如果有疑问,请使用 to_date() 而不是字符串进行测试。
  • @Gary_W 啊哈,不,这是一个例子
  • @Gary_W 如果我把这个数据保存下来,但我不知道为什么另一个没有。 INSERT INTO CLIENTE VALUES('12378095-8','Antonio','Lopez','Tapia','Bravante 1345',97642378,'alt@gmail.com','18-JUL-1985','M',4);

标签: sql oracle oracle10g sql-insert


【解决方案1】:

无法复制:

SQL Fiddle

Oracle 11g R2 架构设置

CREATE TABLE CLIENTE(
RUT VARCHAR2(10) CONSTRAINT CLIENTE_PK PRIMARY KEY,
NOMBRE VARCHAR2(20) CONSTRAINT NOTNULL_NOM_CLIENTE NOT NULL,
APELLIDOP VARCHAR2(30) CONSTRAINT NOTNULL_APPEP_CLIENTE NOT NULL,
APELLIDOM VARCHAR2(30) CONSTRAINT NOTNULL_APPEM_CLIENTE NOT NULL,
DIRECCION VARCHAR2(100) CONSTRAINT NOTNULL_DIR_CLIENTE NOT NULL,
TELEFONO NUMBER(8) CONSTRAINT NOTNULL_FONO_CLIENTE NOT NULL,
EMAIL VARCHAR2(255) CONSTRAINT NOTNULL_MAIL_CLIENTE NOT NULL,
FECHA_NACIMIENTO DATE CONSTRAINT NOTNULL_NACIMIENTO_CLIENTE NOT NULL,
SEXO CHAR(1) CONSTRAINT NOTNULL_SEXO_CLIENTE NOT NULL,
COD_CIUDAD NUMBER(3) CONSTRAINT NOTNULL_COD_CIUDAD NOT NULL
);

INSERT INTO CLIENTE 
VALUES('08798234-9','Luis','Garcia','Ramirez','Málaga 753',78452378,'lgarcia@gmail.com','12-APR-1977','M',1);


|        RUT | NOMBRE | APELLIDOP | APELLIDOM |  DIRECCION | TELEFONO |             EMAIL |     FECHA_NACIMIENTO | SEXO | COD_CIUDAD |
|------------|--------|-----------|-----------|------------|----------|-------------------|----------------------|------|------------|
| 08798234-9 |   Luis |    Garcia |   Ramirez | Málaga 753 | 78452378 | lgarcia@gmail.com | 1977-04-12T00:00:00Z |    M |          1 |

【讨论】:

  • 我不明白你为什么没有在sql developer中输入数据
  • 因为我利用空闲时间,在周日为陌生人回答问题,而我并没有为此在我的个人笔记本电脑上安装 Oracle。这对你来说足够解释吗?我的回答的重点是它无法复制,因此您的问题不会产生明确的答案。问题出在您的最后,我们不知道如何进一步提供帮助。正如我刚刚证明的那样,该插入没有任何问题。也许你有触发器?
  • 不,我没有触发器
  • 如果我把这个数据保存了,但我不知道为什么另一个没有。 INSERT INTO CLIENTE VALUES('12378095-8','Antonio','Lopez','Tapia','Bravante 1345',97642378,'alt@gmail.com','18-JUL-1985','M',4);
  • “那个插入没有什么问题”——除了它使用的是字符串而不是日期,因此依赖于隐式转换和 NLS 设置; OP 的环境与 SQL Fiddle 的环境不同。它有点像 OP 的结尾,但它是可重现的 *8-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
相关资源
最近更新 更多