执行CREATE TABLE建表语句提示Missing right parenthesis报错求助
问题原因与解决方案
报错根因
你运行SQL的环境为Oracle数据库,INT/INTEGER类型在Oracle中属于NUMBER类型的子类型,语法上不支持指定长度参数。你语句中写的INT(3)、INT(10)属于非法语法,数据库解析时遇到不符合规则的参数配置,会误判为建表语句的右括号缺失,因此抛出Missing right parenthesis报错。
修复方案
你可以选择以下任意一种方案修改SQL:
- 方案1:不需要限制数字字段长度时,直接删除INT后的长度参数,修改后语句如下:
CREATE TABLE CUSTOMER ( CUSTOMER_NO INT PRIMARY KEY, CUSTOMER_NAME VARCHAR2(200), CUSTOMER_ADDRESS VARCHAR2(200), CUSTOMER_PHONE INT, GENDER VARCHAR2(10) );
- 方案2:需要明确限制数字字段的精度时,改用Oracle原生支持的
NUMBER类型:
CREATE TABLE CUSTOMER ( CUSTOMER_NO NUMBER(3) PRIMARY KEY, CUSTOMER_NAME VARCHAR2(200), CUSTOMER_ADDRESS VARCHAR2(200), CUSTOMER_PHONE NUMBER(10), GENDER VARCHAR2(10) );
额外优化建议
不建议使用数字类型存储手机号,后续如果遇到带+86前缀、区号分隔符等特殊格式的手机号会存储失败,建议将CUSTOMER_PHONE字段改为VARCHAR2(20)类型。
内容的提问来源于stack exchange,提问作者salman bin zaraah
相关产品推荐
相关产品推荐

