В оракуле PLSQL я хочу сравнить строку, которая должна начинаться с алфавита [AZ] может содержать 0-9, _ и разрешенные пробелы - PullRequest
0 голосов
/ 26 июня 2019

Я хочу проверить значение переменной, которое должно начинаться с алфавита и должно содержать только AZ 0-9 и подчеркивание _ без пробелов (Oracle PLSQL).

BEGIN
IF regexp_like('Name#123','^([0-9]|_)') THEN
    dbms_output.put_line('TRUE');
ELSE
    dbms_output.put_line('FALSE');
END IF;
END; 

BEGIN
IF regexp_like('Name#123','^([0-9]|_)') THEN
    dbms_output.put_line('TRUE');
ELSE
    dbms_output.put_line('FALSE');
END IF;
END;

Ответы [ 3 ]

1 голос
/ 26 июня 2019
IF REGEXP_LIKE(v_str, '[^A-Za-z0-9_]') THEN
            dbms_output.put_line('has special characters'); 
        ELSIF REGEXP_INSTR(v_str, '[A-Za-z]') <> 1 THEN 
            dbms_output.put_line('does not start with character - A-Z or a-z'); 
        ELSE
            dbms_output.put_line('valid columnn name'); 
        END IF;
0 голосов
/ 26 июня 2019
[[:alpha:]]

или

\w

будут принимать строчные буквы и любые акцентированные буквы выше диапазона ASCII.Если вы действительно хотите, чтобы в диапазоне ASCII были только 26 заглавных букв, используйте:

where regexp_like(str, '^[A-Z][A-Z0-9_]*$')
0 голосов
/ 26 июня 2019

REGEXP_LIKE (..., '^[[:alpha:]]\w*$') или REGEXP_LIKE (..., '^[A-Za-z][A-Za-z0-9_]*$'), что более или менее одинаково, должно работать. (Это зависит только от того, хотите ли вы разрешить буквы помимо A-Z или нет.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...