create table table1
(
column1 varchar2(8)
check constraint column1_ch check ........
);
如何检查前4个字符是特定字母集的数据,而最后4个字符是数字?以及一系列价值观。
示例,数据可以是ABCD2121,ABCD1111。
范围 - ABCD0001至ABCD9999
所以'ABCD'是固定的,而数字正在变化。
我已经在网上讨论使用'[]“来定义数字,但我无法将其整合到我的约束中。
由于
答案 0 :(得分:1)
最简单的方法是使用正则表达式:
alter table table1
add constraint chck_code check (regexp_like(column1, '(ABCD)[0-9]{4}') );
答案 1 :(得分:0)
您的检查条件应如下:
(column1 LIKE 'ABCD[0-9][0-9][0-9][1-9]')
编辑: 已修改为使用设置前缀与字母字符的范围。
以下是使用Microsoft SQL Server的解决方案:
DECLARE @MyTable TABLE
(column1 varchar(8) check (column1 LIKE 'ABCD[0-9][0-9][0-9][1-9]'))
INSERT INTO @MyTable (column1)
SELECT 'ABCD0000'
UNION SELECT 'ABCD2121'
UNION SELECT 'ABCD1111';
SELECT *
FROM @MyTable;
INSERT INTO @MyTable (column1)
SELECT 'ABCD000A'; --<== Fails!
INSERT INTO @MyTable (column1)
SELECT 'ABCD221'; --<== Fails!
答案 2 :(得分:0)
如果您有一组固定的前缀,请使用regexp_like并枚举前缀列表:
alter table test_1
add constraint chk_col1 check(regexp_like(column1, '(ABCD|EFGH)[0-9]{4}'));
这将允许ABCD和EFGH作为前缀,后面恰好是4位数。