4

我在 Microsoft SQL 数据库中有一个代表用户名的 VARCHAR(30) 列。我想添加一个 CHECK 约束,它只允许使用特定范围的字符:具体来说,az、AZ、下划线和破折号。我必须使用什么表达方式?

4

2 回答 2

5
create table t (
   a varchar(30) check (
      a like replicate('[a-zA-Z\_-]', len(a)) escape '\'));

如果您的排序规则不区分大小写,那么您不需要同时使用[a-z]and [A-Z]

于 2010-12-13T05:48:01.297 回答
3
CREATE TABLE T 
(
 a VARCHAR(30) NOT NULL UNIQUE
    CHECK (a NOT LIKE '%[^a-zA-Z\_-]%' ESCAPE '\')
);
于 2010-12-13T08:27:43.997 回答