如何在MSSQL中的VARCHAR列上创建CHECK约束,指定可能出现在数据中的有效字符集?

时间:2010-12-13 05:30:43

标签: sql sql-server tsql check-constraints

我在Microsoft SQL数据库中有一个表示用户名的VARCHAR(30)列。我想添加一个CHECK约束,它只允许使用一定范围的字符:具体来说,a-z,A-Z,下划线和短划线。我必须使用什么表达式?

2 个答案:

答案 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 '\')
);