检查约束只允许某些字符

Check contraint allowing only certain characters

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

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

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 中引入的,为了方便您的使用,必须匹配整个字符串。 (也就是说,搜索的两端都是 "anchored" space。)