该代码是视频的类别,用一个大写字母表示,不包括I,O,Q,V,Y和Z,后跟数字字符。
到目前为止,我已经猜到了。关于如何解决它的任何建议?
create table channelTable (
channelID number NOT NULL,
ChannelName varchar(100) NOT NULL,
ChannelDate date NOT NULL,
UserName varchar(100) NOT NULL UNIQUE,
TopicCode varchar(4) NOT NULL);
CONSTRAINT channelID_pk PRIMARY KEY (channelID)
CONSTRAINT c_topicCode LIKE '[A-Za-z][0-9] NOT (I,O,Q,N,Y,Z)
);
一些评论:
NOT NULL
列不需要。[>PRIMARY KEY
。然后,我建议使用正则表达式。如果该值正好是两个字符,则应这样声明:
VARCHAR2()
或更简单地说:
create table channelTable ( channelID number, ChannelName varchar(100) NOT NULL, ChannelDate date NOT NULL, UserName varchar2(100) NOT NULL UNIQUE, TopicCode char(2) NOT NULL; CONSTRAINT channelID_pk PRIMARY KEY (channelID) CONSTRAINT check (REGEXP_LIKE(c_topicCode, '^[A-HJ-NPR-UYZ][0-9]$') );
话虽如此,我宁愿看到一个填充有正确值的
CONSTRAINT REGEXP_LIKE(c_topicCode, '^[A-Z][0-9]$') AND NOT REGEXP_LIKE(c_topicCode, '^[IOQNYZ]'))
表。然后,您可以使用外键关系来定义适当的代码。
使用正则表达式TopicCodes
匹配不包含^[A-HJ-MPR-X]\d$
的大写字符,后跟数字:
请考虑以下检查条件: