首页 > 解决方案 > 如何在 MS SQL Server 中使用正则表达式(或等效)来解决这个问题?

问题描述

我已经在网上和 SO 中搜索过,试图找到我的问题的解决方案,但我找不到任何人已经解决了这个问题。

在 MS SQL Server 中创建表时,我有一个名为composite_name. 我想向该列添加一个约束,以便它只接受以下形式的值:

COMPOSITE1, COMPOSITE2, ..., COMPOSITE[x], ...

其中 [x] 是任意整数。

我试图通过在我的表创建语句中添加以下约束来做到这一点:

CONSTRAINT [check_composite_name] CHECK (composite_name LIKE 'COMPOSITE[0-9]+')

该表创建,但是当我插入具有上述形式的数据时,出现错误。显然字符串模式有问题,但我不知道如何解决这个问题。

我强调我使用的是 Microsoft SQL Server,所以没有像REGEXP_LIKE. 我以为我已经正确遵循了此处给出的文档。

任何帮助将不胜感激。提前致谢

标签: sqlsql-server

解决方案


您可以使用likenot like

check (composite like 'COMPOSITE[0-9]%' and
       composite not like 'COMPOSITE%[^0-9]%'
      )

注意:这也可能匹配小写,具体取决于列的排序规则。


推荐阅读