sql - 如何在 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
. 我以为我已经正确遵循了此处给出的文档。
任何帮助将不胜感激。提前致谢
解决方案
您可以使用like
和not like
:
check (composite like 'COMPOSITE[0-9]%' and
composite not like 'COMPOSITE%[^0-9]%'
)
注意:这也可能匹配小写,具体取决于列的排序规则。
推荐阅读
- html - HTML 页脚在 Github 页面上不起作用
- python - 如何标准缩放 3D 矩阵?
- javascript - 将多个变量推入单个函数 Javascript
- python - 有没有一种有效的方法可以在 Python 中重新组合一个大数组?
- php - 带有 php 的 html 表单无法连接并且也没有显示错误
- chart.js - 图表 js 仅在迷你图上显示 2 个数据点
- r - 使用 purrr map2 将嵌套数据中的 if then 构造转换为 case_when
- c# - 在 C# 中将文件文本解析为字典
- ios - 如何在 Swift 的另一个 ViewController 中打印选定单元格的数据?
- html - 停止文字环绕图像