1

我有一个包含一些VARCHAR字段的 SQL (SQL Server Express 2008) 表。

我想创建一个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我可以在表达式中做这样的事情吗?

4

2 回答 2

5

您可以使用

NOT ([FirstName]  LIKE '%[<>?]%' OR [LastName]  LIKE '%[<>?]%')
于 2012-10-23T20:36:36.640 回答
1

改变table nom_table,你应该添加constraint ck check(firstname not like '%[<,>,?]%').

于 2013-09-10T20:21:51.200 回答