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

3zwtqj6y  于 2023-04-11  发布在  Oracle
关注(0)|答案(3)|浏览(194)

我在Sql上是乞丐。
我创建了一个包含phone字段的表:

CREATE TABLE contact (

phone NUMBER(9),

)

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

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

但它不工作,因为它将数字格式转换为字符串。
如何保持数字类型并检查它为9位数?

nr9pn0ug

nr9pn0ug1#

不要将电话存储为数字。请使用字符串。如果必须是9位数字,则:

CREATE TABLE contact (
    phone CHAR(9),
    constraint chk_contact_phone check ( regexp_like(phone, '^[0-9]{9}$') )
)

电话号码并不是一个真正的数字。数字是你可以做算术的东西。此外,电话号码也可以以0开头。

r7knjye2

r7knjye22#

您可以将电话号码设置为varchar2或char类型,并通过正则表达式检查电话号码:

CREATE TABLE contact (
   phone CHAR(9),
   constraint valid_phone_number 
   CHECK (REGEXP_LIKE(phone, 'd{9}$'))
);
9rygscc1

9rygscc13#

添加约束len CHECK(LENGTH(PH_No)=10);

相关问题