我对Sql一窍不通。
我创建了一个包含phone字段的表:
CREATE TABLE contact (
phone NUMBER(9),
)
现在,我必须设置一个检查,以限定数字var的数字长度,以便只允许您输入9位数字,并且不能超过或小于9位数字。
我试着:
ALTER TABLE contact ADD CONSTRAINT CK_phone_right check (length(phone) < 9)
但它不起作用,因为它将数字格式转换为字符串。
如何保持号码类型并将其检查为9位数?
发布于 2019-02-22 06:58:22
不要将电话存储为号码。请改用字符串。如果必须恰好是9位数,则:
CREATE TABLE contact (
phone CHAR(9),
constraint chk_contact_phone check ( regexp_like(phone, '^[0-9]{9}$') )
)
电话号码并不是真正的号码。数字是你可以做算术运算的东西。此外,电话号码也可以以0
开头。
发布于 2019-02-22 07:12:26
您可以将电话号码设置为varchar2或char类型,并通过正则表达式检查电话号码:
CREATE TABLE contact (
phone CHAR(9),
constraint valid_phone_number
CHECK (REGEXP_LIKE(phone, 'd{9}$'))
);
https://stackoverflow.com/questions/54817538
复制相似问题