在Oracle PLSQL中,我想比较以字母[A-Z]开头的字符串,可以包含0-9,_和允许的空格

时间:2019-06-26 09:17:56

标签: sql oracle plsql

我想检查一个变量值,该变量值应以字母开头,并且应仅包含A-Z 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 个答案:

答案 0 :(得分:1)

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;

答案 1 :(得分:0)

大致相同的

REGEXP_LIKE (..., '^[[:alpha:]]\w*$')REGEXP_LIKE (..., '^[A-Za-z][A-Za-z0-9_]*$')应该起作用。 (这取决于您是否允许除A-Z之外的字母。)

答案 2 :(得分:0)

[[:alpha:]]

\w

将接受小写字母和任何超出ASCII范围的重音字母。如果您只希望ASCII范围内的26个大写字母,请使用:

where regexp_like(str, '^[A-Z][A-Z0-9_]*$')