问题描述
|
我正在创建一个表,约束之一是第一个字符必须为\“ G \”,然后是5个数字:
CREATE TABLE PHONE (
PHONEID CHAR (6) NOT NULL,PHONENO NUMERIC NOT NULL,CONSTRAINT PHONE_PHONEID_PK PRIMARY KEY (PHONEID),CONSTRAINT PHONE_PHONENO_UK UNIQUE (PHONENO)
);
如何使用sql执行此操作?我需要打电话给他
解决方法
在MS SQL中,它看起来像这样:
create table Phone
(
PhoneId char(6) not null
constraint Phone_PhoneId_PK primary key
constraint Phone_PhoneId_CK check (PhoneId like \'G[0-9][0-9][0-9][0-9][0-9]\'),PhoneNumber numeric not null
constraint Phone_PhoneNumber_UK unique
)
insert Phone
values(\'G00001\',123) -- pass
insert Phone
values(\'G0001\',123) -- fail
insert Phone
values(\'D0001\',123) -- fail
, 在Oracle中,我认为应该是:
CREATE TABLE PHONE (
PHONEID CHAR (6) NOT NULL,PHONENO NUMERIC NOT NULL,CONSTRAINT PHONE_PHONEID_PK PRIMARY KEY (PHONEID),CONSTRAINT PHONE_PHONENO_UK UNIQUE (PHONENO),CONSTRAINT PHONE_PHONEID_CK CHECK(REGEX_LIKE(PHONEID,\'^G\\d{5}$\'))
);
*免责声明:自从我与Oracle合作以来已经有一段时间了,我现在无法访问Oracle数据库来验证上述内容,而这是基于Check Restraints和REGEXP_LIKE函数的文档。可能需要一些调整。