检查禁令仅允许某些字符

时间:2016-06-13 17:30:24

标签: 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)

我宁愿不为第三个要求使用触发器,但是检查约束 - 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用SQL regexes吗?

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

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