正则表达式
REGEXP_LIKE执行正则表达式匹配
SELECT FIRST_NAME
FROM EMPLOYEES
WHERE REGEXP_LIKE(FIRST_NAME,'^al(an|yss)a$','i');--al之后是an或yss
SELECT FIRST_NAME
FROM EMPLOYEES
WHERE REGEXP_LIKE(FIRST_NAME,'^al(.){2}a$','i');--中间有任意一个字母出现两次
SELECT FIRST_NAME
FROM EMPLOYEES
WHERE REGEXP_LIKE(FIRST_NAME,'^al[^y]+a$','i');--第三个字母不允许是y一直匹配
REGEXP_REPLACE执行正则表达式替换
SELECT PHONE_NUMBER,REGEXP_REPLACE(PHONE_NUMBER,'\.','-')AS PHONE FROM EMPLOYEES;--必须要加转义字符\ 不加的话 ‘.’代表任意字符
REGEXP_INSTR搜索出现的位置
SELECT STREET_ADDRESS,
REGEXP_INSTR(STREET_ADDRESS,'[[:alpha:]]')AS FIRST_ALPHA_POSITION,--任何字母第一次出现的位置
REGEXP_INSTR(STREET_ADDRESS,'[[:digit:]]')AS FIRST_ALPHA_POSITION,--任何数字第一次出现的位置
REGEXP_INSTR(STREET_ADDRESS,'[[:alnum:]]')AS FIRST_ALPHA_POSITION--任何数字或字母第一次出现的位置
FROM LOCATIONS;
使用REGEXP_SUBSTR控制字符输出
SELECT STREET_ADDRESS,
REGEXP_SUBSTR(STREET_ADDRESS, ' [^ ]+ ')AS ROAD1,
REGEXP_SUBSTR(STREET_ADDRESS, '[^ ]+ ')AS ROAD2,
REGEXP_SUBSTR(STREET_ADDRESS, '[^ ]+')AS ROAD3,
REGEXP_SUBSTR(STREET_ADDRESS, ' [^ ]+(.)+')AS ROAD4,
REGEXP_SUBSTR(STREET_ADDRESS, '[[:alpha:]]')AS ROAD5,
REGEXP_SUBSTR(STREET_ADDRESS, '[[:alpha:]]+')AS ROAD6,
REGEXP_SU