检查约束未读取 [A-Z]?

问题描述

我在检查约束读取 [A-Z] 时遇到问题。

代码如下:

drop table test CASCADE CONSTRAINTS;

Create table test (
post Varchar2(6),CHECK (post like '[A-Z]')
);

insert into test values ('A');

并且我在尝试插入 A 后收到“违反检查约束”错误。任何反馈都将不胜感激。即使它对你有用,因为一切都告诉我它应该有用。

解决方法

使用REGEXP_LIKE

CREATE TABLE test (
    post Varchar2(6),CHECK (REGEXP_LIKE(post,'^[A-Z]+$'))
);

模式 ^[A-Z]+$ 将匹配仅包含大写字母的帖子。如果您想标记以大写字母开头的帖子,请使用 ^[A-Z]