在sql编程中为id创建固定编号
我试图在sql中为我的id列设置10个数字,并且仅限数字。我想检查输入是否仅从0000000000到99999999。我写了以下代码,但我不确定哪里出错,因为它让A000000000通过了检查。请帮帮我!非常感谢在sql编程中为id创建固定编号,sql,postgresql,Sql,Postgresql,我试图在sql中为我的id列设置10个数字,并且仅限数字。我想检查输入是否仅从0000000000到99999999。我写了以下代码,但我不确定哪里出错,因为它让A000000000通过了检查。请帮帮我!非常感谢 create table member ( member_id char(10) primary key, check (member_id not like '%^[0-9]%' and char_length(member_id) = 10) ); insert into
create table member (
member_id char(10) primary key,
check (member_id not like '%^[0-9]%' and char_length(member_id) = 10)
);
insert into member values ('A000000000')
更改
成员id不象“%^[0-9]”
到
member_id not ~'^[0-9]{10}'
对于正则表达式,使用了~
运算符而不是like
您的示例如“%^[0-9]%”
检查您创建的任何位置的^[0-9]
字符串是否完全匹配
member_id not like '%^[0-9]%'
这将使得除倒置(^)0-9之外的任何内容都是不允许的。
解决方法如下:
check (member_id LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
是否应该是[^0-9]?
LIKE
不支持正则表达式。LIKE
不支持正则表达式。LIKE的唯一通配符是sqlcode中的%
和\
,非常感谢。我想它不识别不~所以我把它改成了~'[0-9]{10}@a_horse_,有_no_名字是的-我为什么写这个?:0