我在Microsoft SQL数据库中有一个表示用户名的VARCHAR(30)列。我想添加一个CHECK约束,它只允许使用一定范围的字符:具体来说,a-z,A-Z,下划线和短划线。我必须使用什么表达式?
答案 0 :(得分:5)
create table t (
a varchar(30) check (
a like replicate('[a-zA-Z\_-]', len(a)) escape '\'));
如果您的排序规则不区分大小写,那么您不需要[a-z]
和[A-Z]
。
答案 1 :(得分:3)
CREATE TABLE T
(
a VARCHAR(30) NOT NULL UNIQUE
CHECK (a NOT LIKE '%[^a-zA-Z\_-]%' ESCAPE '\')
);