这条语句使得ENAME 字段只能包含字母和数字字符(也就是说没有空格或者标点符号)。试图插入或者更新这些数据将导致一个ORA-2290 异常,或者检查约束的有效性。
REGEXP_INSTR 与INSTR 函数类似。它返回一个字符串中匹配一个正则表达式的第一个子串的开始位置。例如:
SELECT REGEXP_INSTR('The total is $400 for your purchase.','$[[:digit:]]+')
FROM DUAL;
这个查询返回14,即$400在字符串的开始位置。另外还可以指定子串出现的次数;开始搜索的位置;是返回匹配的位置还是返回匹配之后字符的位置。
REGEXP_SUBSTR 返回匹配一个正则表达式的子串。虽然结合使用SUBSTR 和REGEXP_INSTR 及LENGTH 也可以实现这一功能,但是使用这个函数却更为简单。
SELECT REGEXP_INSTR('one,two,three','[^,]*') FROM DUAL;
这个查询返回'one',将第一个参数看成一个逗号分隔的列表并返回第一个逗号之前的所有字符。
REGEXP_REPLACE 返回初始参数被匹配子串替换之后的结果。例如:
SELECT REGEXP_REPLACE('The temperature is 23°F',
'([[:digit:]])+°F',
('1'-32)*5/9'°C')
FROM DUAL;
这个查询将查找一个华氏温度并将其转换为摄氏度。它将返回:'The temperature is -5°C'。