我在Sql上是乞丐。我创建了一个包含phone字段的表:
CREATE TABLE contact ( phone NUMBER(9), )
现在我必须设置一个CHECK来分隔数字var的数字长度,以允许您只输入一个9位数,不能多或少。我试着:
ALTER TABLE contact ADD CONSTRAINT CK_phone_right check (length(phone) < 9)
但它不工作,因为它将数字格式转换为字符串。如何保持数字类型并检查它为9位数?
nr9pn0ug1#
不要将电话存储为数字。请使用字符串。如果必须是9位数字,则:
CREATE TABLE contact ( phone CHAR(9), constraint chk_contact_phone check ( regexp_like(phone, '^[0-9]{9}$') ) )
电话号码并不是一个真正的数字。数字是你可以做算术的东西。此外,电话号码也可以以0开头。
0
r7knjye22#
您可以将电话号码设置为varchar2或char类型,并通过正则表达式检查电话号码:
CREATE TABLE contact ( phone CHAR(9), constraint valid_phone_number CHECK (REGEXP_LIKE(phone, 'd{9}$')) );
9rygscc13#
添加约束len CHECK(LENGTH(PH_No)=10);
3条答案
按热度按时间nr9pn0ug1#
不要将电话存储为数字。请使用字符串。如果必须是9位数字,则:
电话号码并不是一个真正的数字。数字是你可以做算术的东西。此外,电话号码也可以以
0
开头。r7knjye22#
您可以将电话号码设置为varchar2或char类型,并通过正则表达式检查电话号码:
9rygscc13#
添加约束len CHECK(LENGTH(PH_No)=10);