sql - 检查仅允许某些字符的约束

标签 sql firebird firebird2.5

我正在尝试在 Firebird (2.5) 中创建一个列,它:

  • 不能为 NULL
  • 必须正好是 16 个字符
  • 只能包含数字和小写字母a-f

我可以解决第一个和第二个限制。

ALTER TABLE TEST_TABLE ADD NEW_COLUMN CHAR(16) NOT NULL CHECK (CHAR_LENGTH(TRIM(VALUE)) = 16)

我不想对第三个要求使用触发器,而是使用检查约束 - 有什么方法可以做到这一点吗?

最佳答案

你可以使用 SQL regexes

CHECK (value SIMILAR TO '[a-f0-9]{16}')

这些是在 Firebird 2.5 中引入的,并且为了方便您的目的,它们必须匹配整个字符串。 (也就是说,它们“锚定”在搜索空间的两端。)

关于sql - 检查仅允许某些字符的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37795826/

相关文章:

sql - ASP MVC Lambda 表达式或查询扩展?

firebird - Nbackup从远程别名进行备份

docker - 如何使用 docker 文件路径连接到 firebird 的 docker 镜像?

variables - Firebird 2.5 中无法声明变量,为什么?

mysql - 动态生成唯一 ID

mysql - 从其他表数据填充新的数据库表

ios - Firebird 和 Swift 兼容性?

Python 数据库游标异常时序

firebird - Firebirds SELECT FIRST 可以接受变量吗?

SQL:外连接和计数