在sql编程中为id创建固定编号

在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

我试图在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 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