我是Sql的初学者。
我创建了一个带有电话字段的表格:
CREATE TABLE contact (
phone NUMBER(9),
)
现在,我必须设置一个CHECK来将数字的长度分隔为数字var,以允许您仅输入9位数字,而不能输入或多或少。
我尝试:
ALTER TABLE contact ADD CONSTRAINT CK_phone_right check (length(phone) < 9)
但是它不起作用,因为它将数字格式转换为字符串。
如何保持数字类型并将其检查为9位数字?
答案 0 :(得分:3)
请勿将手机存储为数字。请改用字符串。如果必须是9位数字,则:
CREATE TABLE contact (
phone CHAR(9),
constraint chk_contact_phone check ( regexp_like(phone, '^[0-9]{9}$') )
)
电话号码不是真正的号码。您可以对数字进行算术运算。另外,电话号码也可以以0
开头。
答案 1 :(得分:0)
您可以将电话号码设置为varchar2或char类型,并通过正则表达式检查电话号码:
CREATE TABLE contact (
phone CHAR(9),
constraint valid_phone_number
CHECK (REGEXP_LIKE(phone, 'd{9}$'))
);