2017-08-10 77 views
0

我正在创建一个许可证表,它由一个表中的两个属性和另一个表中的两个属性组成。许可证类型和客户位于主客户表中,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 - “无效号码”
*原因:指定的号码无效。
*操作:指定一个有效的号码。

+0

标签您正在使用的数据库管理系统。 (Oracle?) – jarlh

+0

您需要显示源表中列的类型。 – chrisis

+0

添加两个表结构和小数据,以便可以使用Query来创建具有必需属性的必需表。对于mySql用户,mysql文档https://dev.mysql.com/doc/refman/5.6/en/create-table-select.html是有帮助的 –

回答

1

推测License_Number是一个字符串。因此,摆在单引号的比较:

WHERE License_number <> '0'; 

正在发生的事情是,相较于一些引起所有License_Number s到被转换成数字 - 而有些则不是数字。因此,错误。

这也将过滤掉NULL值,但你可以明确的:

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