我有一个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 '%?%')
上面的SQL语法工作正常,但如果有做同样事情的简写方法会很好。 注意示例中的冗余。如果我想添加更多列和/或无效字符
,这很麻烦如果我们可以做这样的事情会很好:
NOT FirstName,LastName LIKE IN ('<','>','?')
我可以在Check Constraint
表达式中执行类似的操作吗?
答案 0 :(得分:5)
您可以使用
NOT ([FirstName] LIKE '%[<>?]%' OR [LastName] LIKE '%[<>?]%')
答案 1 :(得分:1)
更改table nom_table
,您应该添加constraint ck check(firstname not like '%[<,>,?]%')
。