用于MsSQL检查约束的正则表达式

时间:2017-01-21 16:52:05

标签: sql-server constraints

我正在尝试对我拥有的表进行列级检查约束。我希望检查插入列中的值,并确保它们只是字符。

例如,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]')
  ); 

1 个答案:

答案 0 :(得分:3)

SQL Server LIKE语法不接受正则表达式。

您可以使用check (owner_firstname not like '%[^A-Z]%')

此约束拒绝包含不在A-Z范围内的字符的任何值。

除非您使用区分大小写的排序规则,否则您无需另外指定a-z