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][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 に答える