J'ai une colonne VARCHAR (30) dans une base de données Microsoft SQL représentant un nom d'utilisateur. Je voudrais ajouter une contrainte CHECK qui permet uniquement d'utiliser une certaine plage de caractères: en particulier, a-z, A-Z, underscore et dash. Quelle expression dois-je utiliser?Comment créer une contrainte CHECK sur une colonne VARCHAR dans MSSQL en spécifiant un ensemble valide de caractères pouvant apparaître dans les données?
4
A
Répondre
5
create table t (
a varchar(30) check (
a like replicate('[a-zA-Z\_-]', len(a)) escape '\'));
Si votre collation n'est pas sensible à la casse, alors vous n'avez pas besoin à la fois [a-z]
et [A-Z]
.
3
CREATE TABLE T
(
a VARCHAR(30) NOT NULL UNIQUE
CHECK (a NOT LIKE '%[^a-zA-Z\_-]%' ESCAPE '\')
);