我正在尝试对我拥有的表进行列级检查约束。我希望检查插入列中的值,并确保它们只是字符。
例如,values ('hello','there')
会通过,但values ('h3llo','th3r3')
则不会。
我可以让它适用于特定数量的角色(见下表),但我想让它变得动态。
我也试过了^[a-zA-Z]+$
,但这似乎也没有用。
简单的表格布局如下。
CREATE TABLE owner
(
owner_id ID IDENTITY(1, 1) PRIMARY KEY,
owner_firstname FIRSTNAME,
owner_lastname LASTNAME,
CONSTRAINT firstname_cc CHECK (owner_firstname LIKE '[a-zA-Z][a-zA-Z][a-zA-Z]'),
CONSTRAINT lastname_cc CHECK (owner_lastname LIKE '[a-zA-Z][a-zA-Z][a-zA-Z]')
);
答案 0 :(得分:3)
SQL Server LIKE
语法不接受正则表达式。
您可以使用check (owner_firstname not like '%[^A-Z]%')
。
此约束拒绝包含不在A-Z
范围内的字符的任何值。
除非您使用区分大小写的排序规则,否则您无需另外指定a-z
。