我知道我可以设置另一个表并对其设置外键约束。这是唯一的方法吗?
答案 0 :(得分:2)
如果使用双阴性结构,则只允许使用字符A到H
ALTER TABLE MyTable WITH CHECK
CONSTRAINT CK_MyTable_MyColChars CHECK (
MyColChars COLLATE Latin1_General_BIN NOT LIKE '%[^ABCDEFGH]%'
)
要重复使用,请使用udf
CREATE FUNCTION dbo.CheckChars (@Value varchar(100))
RETURNS bit
AS
BEGIN
RETURN (CASE WHEN @Value NOT LIKE '%[^ABCDEFGH]%' THEN 1 ELSE 0 END)
END
GO
... CHECK (
dbo.CheckChars (MyColChars) = 1
)
如果您想要A_F,分号和空格,例如'%[^ABCDEF; ]%'
答案 1 :(得分:1)
您可能希望研究创建检查约束。这篇文章有一个你可以建立的匹配模式:
How to make SQL Server 2008 Check Constraint of a table Allow Only Certain characters?
为了获得区分大小写的匹配,请删除模式中的“a-z”并使用区分大小写的排序规则创建检查约束。即使服务器和数据库不区分大小写,也可以确保区分大小写匹配。