Sql 仅允许某些字符的检查约束
我试图在Firebird(2.5)中创建一个专栏,它:Sql 仅允许某些字符的检查约束,sql,firebird,firebird2.5,Sql,Firebird,Firebird2.5,我试图在Firebird(2.5)中创建一个专栏,它: 不能为空 必须正好是16个字符 只能包含数字和小写字母a-f 我可以解决第一个和第二个限制 ALTER TABLE TEST_TABLE ADD NEW_COLUMN CHAR(16) NOT NULL CHECK (CHAR_LENGTH(TRIM(VALUE)) = 16) 我不希望在第三个需求中使用触发器,但需要一个检查约束—有什么方法可以做到这一点吗?您可以使用吗 这些是Firebird 2.5中引入的,为了方便起见,必须匹配
- 不能为空
- 必须正好是16个字符
- 只能包含数字和小写字母
-a
f
ALTER TABLE TEST_TABLE ADD NEW_COLUMN CHAR(16) NOT NULL CHECK (CHAR_LENGTH(TRIM(VALUE)) = 16)
我不希望在第三个需求中使用触发器,但需要一个检查约束—有什么方法可以做到这一点吗?您可以使用吗
这些是Firebird 2.5中引入的,为了方便起见,必须匹配整个字符串。(也就是说,它们“锚定”在搜索空间的两端。)工作正常,我只需将
a-z
更改为a-f
。我不知道这个事实,它已经在2.5中引入,一直认为它是firebird 3的一个新特性。
CHECK (value SIMILAR TO '[a-f0-9]{16}')