Как определить ограничение для столбца, чтобы иметь буквенно-цифровые значения в Oracle? - PullRequest
0 голосов
/ 06 июня 2018

Мне нужно создать таблицу, в которой есть столбец.записи должны быть буквенно-цифровыми.Как я могу определить ограничение для этой ситуации, которую я пытался использовать,

create table bankAccount  
(  
accNo varchar2(15) check (accNo like '%[A-Za-Z0-9]%')  
);  

, но во время ввода данные не сохраняются и записи не создаются.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы бы использовали 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]+$') ) );

Надеюсь, это поможет.

0 голосов
/ 06 июня 2018

Вы бы использовали regexp_like():

accNo varchar2(15) check (regexp_like(accNo, '^[A-Za-z0-9]+$'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...