检查约束只允许某些字符
Check contraint allowing only certain characters
我正在尝试在 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 中引入的,为了方便您的使用,必须匹配整个字符串。 (也就是说,搜索的两端都是 "anchored" space。)
我正在尝试在 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 中引入的,为了方便您的使用,必须匹配整个字符串。 (也就是说,搜索的两端都是 "anchored" space。)