Если использовать проверочное ограничение, данное другими выше (например, [AB] [AB] и т. Д.), Не дает вам гибкости для правильного тестирования значения varchar, тогда вы можете попробовать использовать триггер.
Триггер позволит вам более тщательно проверить, что вам нужно.
См. Пример C по этой ссылке , в то время как он использует триггер для проверки бизнес-правил по таблицам, его просто нужно изменить, чтобы он соответствовал тому, что когда-либо проверялось, что вам нужно делать :)
Надеюсь, это поможет
Пример кода, который поможет вам изменить тестирование в соответствии с вашими потребностями
CREATE TABLE [dbo].[TestTrigger](
[stringtest] [varchar](100) NULL
) ON [PRIMARY]
GO
CREATE TRIGGER [dbo].[TestTrigger_TestAB]
ON [dbo].[TestTrigger]
FOR INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @testString varchar(100)
Declare @Len as int;
Declare @SearchPattern as varchar(8000);
Declare @Result as Int;
SELECT @testString = stringtest FROM inserted
Select @Len = Len(@testString);
While @Len>0
Begin
Select @SearchPattern = Isnull(@SearchPattern,'') + '[A-B]';
Select @Len = @Len -1;
End
Select @Result = Case When @testString Like @SearchPattern Then 1 Else 0 End;
IF (@Result = 0)
BEGIN
RAISERROR ('Value entered did not contain only A or B', 16, 1)
ROLLBACK TRANSACTION
END
END
SET ANSI_PADDING OFF
GO