如何在oracle sql中检查数字的长度?

时间:2019-02-21 22:56:56

标签: sql oracle

我是Sql的初学者。

我创建了一个带有电话字段的表格:

CREATE TABLE contact (

phone NUMBER(9),

)

现在,我必须设置一个CHECK来将数字的长度分隔为数字var,以允许您仅输入9位数字,而不能输入或多或少。

我尝试:

ALTER TABLE contact ADD CONSTRAINT CK_phone_right check (length(phone) < 9)

但是它不起作用,因为它将数字格式转换为字符串。

如何保持数字类型并将其检查为9位数字?

2 个答案:

答案 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}$'))
);