如何创建一个简洁的SQL"检查约束",禁止所有字符串字段的某些字符?

Jed*_*Jed 1 sql t-sql check-constraints sql-server-express

我有一个SQL(SQL Server Express 2008)表,其中包含一些VARCHAR字段.

我想创建一个Check Constraint将确保没有VARCHAR值包含某些字符.

示例:(不允许在FirstName和LastName列中使用<,>字符)

(NOT [FirstName] LIKE '%<%' 
AND NOT [FirstName] LIKE '%>%' 
AND NOT [FirstName] LIKE '%?%')
AND 
(NOT [LastName] LIKE '%<%' 
AND NOT [LastName] LIKE '%>%' 
AND NOT [LastName] LIKE '%?%')
Run Code Online (Sandbox Code Playgroud)

上面的SQL语法工作正常,但如果有简单的方法做同样的事情会很好.请注意示例中的冗余.如果我想添加更多列和/或无效字符,这很麻烦

如果我们可以做这样的事情会很好:

NOT FirstName,LastName LIKE IN ('<','>','?')
Run Code Online (Sandbox Code Playgroud)

我可以在Check Constraint表达式中做这样的事情吗?

Gil*_*ilM 5

您可以使用

NOT ([FirstName]  LIKE '%[<>?]%' OR [LastName]  LIKE '%[<>?]%')
Run Code Online (Sandbox Code Playgroud)