我需要创建一个包含列的表。条目应该是字母数字。如何为我尝试使用的这种情况定义一个约束,
create table bankAccount
(
accNo varchar2(15) check (accNo like '%[A-Za-Z0-9]%')
);
但在输入期间,不会存储任何数据,也不会创建任何条目。
您可以使用REGEXP_LIKE()
,但如果所有字符都必须是字母数字,那么您需要开始和结束锚点:
CREATE TABLE bankaccount
( accno VARCHAR2(15) CHECK ( REGEXP_LIKE(accno, '^[A-Za-z0-9]+$') ) );
(请注意,您也可以使用[[:alnum:]]
POSIX字符类而不是[A-Za-z0-9]
。)
如果您希望帐号正好是15个字符,那么您可能需要这样的内容:
CREATE TABLE bankaccount
( accno VARCHAR2(15) CHECK ( REGEXP_LIKE(accno, '^[A-Za-z0-9]{15}$') ) );
如果你只想要大写字母:
CREATE TABLE bankaccount
( accno VARCHAR2(15) CHECK ( REGEXP_LIKE(accno, '^[A-Z0-9]+$') ) );
希望这可以帮助。
你会使用regexp_like()
:
accNo varchar2(15) check (regexp_like(accNo, '^[A-Za-z0-9]+$'))