首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在oracle sql中检查数字的长度?

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

Stack Overflow用户
提问于 2019-02-22 06:56:56
回答 2查看 1.4K关注 0票数 0

我对Sql一窍不通。

我创建了一个包含phone字段的表:

代码语言:javascript
复制
CREATE TABLE contact (

phone NUMBER(9),

)

现在,我必须设置一个检查,以限定数字var的数字长度,以便只允许您输入9位数字,并且不能超过或小于9位数字。

我试着:

代码语言:javascript
复制
ALTER TABLE contact ADD CONSTRAINT CK_phone_right check (length(phone) < 9)

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-22 06:58:22

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

代码语言:javascript
复制
CREATE TABLE contact (
    phone CHAR(9),
    constraint chk_contact_phone check ( regexp_like(phone, '^[0-9]{9}$') )
)

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

票数 3
EN

Stack Overflow用户

发布于 2019-02-22 07:12:26

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

代码语言:javascript
复制
CREATE TABLE contact (
   phone CHAR(9),
   constraint valid_phone_number 
   CHECK (REGEXP_LIKE(phone, 'd{9}$'))
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54817538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档