表和主键的编号无效

时间:2017-08-10 11:34:41

标签: sql database oracle

我正在创建一个许可表,它由一个表中的两个属性和另一个表中的一个组成。许可证类型和客户位于主客户表中,而License_ID位于另一个客户表中,因为只有特定类型的客户才能拥有License_id。

我想创建一个许可证表,其中包含许可证编号的主键,然后是该许可证编号的类型和customer_ids。

尝试创建表时会发生此错误,我正在尝试这样做,因此在创建表时,它只会使License_number不是0 / null。我还想将License_number作为主键,以及外键和其他2个属性的外键。

我该怎么做?

CREATE TABLE License AS SELECT
DISTINCT License_number, License_type, cust_id
FROM yoda_60
WHERE License_number !=0;
  

错误报告 -
      ORA-01722:无效的号码
      01722. 00000 - "无效的号码"
      *原因:指定的号码无效       *操作:指定有效数字。

1 个答案:

答案 0 :(得分:1)

据推测License_Number是一个字符串。因此,将比较放在单引号中:

WHERE License_number <> '0';

正在发生的事情是,与数字的比较导致所有 License_Number被转换为数字 - 有些不是数字。因此,错误。

这也会过滤掉NULL值,但您可以明确:

WHERE License_number <> '0' AND License_number IS NOT NULL;