oralce正则表达式 替换非数字字符

替换非字符的内容

REGEXP_REPLACE(字段名,'[^0-9]','' )


l         正则表达式运算符和函数

 

a)      REGEXP_SUBSTR

REGEXP_SUBSTR为指定字符串的一部分与正则表达式建立匹配。语法如下:

REGEXP_SUBSTR(source_string,

pattern,

start_position,

occurrence,

match_parameter)

其中source_string是必须的。可以是带引号的字符串或者变量。Pattern是用单引号引用的与正则表达式。Start_position指定了在字符串中的准确位置,默认值为1。Occurrence是一个选项,指定在源字符串匹配过程中相对其他字符串,哪个字符串应该匹配。最后,match_parameter也是一个选项,指定在匹配时是否区分大水写。

示例1

SQL> select regexp_substr('The zip code 80831 is for falcon, co','[[:digit:]]{5}' ) REGEXP_SUBSTR from dual;

 

REGEXP_SUBSTR

-------------

80831

 

示例2

SQL> select regexp_substr('The zip code 80831 is for falcon, co', '[[:alpha:]]{3,}', 1, 3) REGEXP_SUBSTR from dual;

 

REGEXP_SUBSTR

-------------

code

 

示例3

 

SQL> select regexp_substr('comments or questions - email [email protected]', '[[:alnum:]](([_\.\-\+]?[[:alnum:]]+)*)@' ||

 2         '([[:alnum:]]+)(([\.-]?[[:alnum:]]+)*)\.([[:alpha:]]{2,})') REGEXP_SUBSTR

 3    from dual;

 

REGEXP_SUBSTR

----------------------

[email protected]

 

 

b)      REGEXP_INSTR

REGEXP_INSTR返回与正则表达式匹配的字符和字符串的位置。如

 

SQL> select regexp_instr('The zip code 80831 is for falcon, co', '[[:digit:]]{5}') REGEXP_INSTR from dual;

 

REGEXP_INSTR

------------

          14

 

c)      REGEXP_REPLACE

REGEXP_REPLACE与REPLACE函数类似,提供一种修改与所给正则表达式匹配的字符串的方法。作用包括纠正拼写错误、格式化输入输出的文本。

如电话号码的格式为:719-111-1111。使用REGEX_REPLACER的返回值是:

SQL> select regexp_replace('Reformat the phone number 719-111-1111 ...',

  2         '[1]?[-.]?(\(?[[:digit:]]{3}\)?)+[- .]?'

  3         || '([[:digit:]]{3})[- .]?([[:digit:]]{4})',

  4         ' (\1) \2-\3') regexp_replace

  5    from dual;

 

REGEXP_REPLACE

---------------------------------------------

Reformat the phone number  (719) 111-1111 ...

S

d)      REGEXP_LIKE

REGEXP_LIKE运算符与LIKE运算符相似,但是功能更强大,因为它支持使用与此正则表达式与文本进行匹配。语法如下:

REGEXP_LIKE(source_string, pattern, match_parameter)

Source_string可以是文字字符串,如果前面例中的字符串,也可以是包含某些字符串的变量或列。Pattern是要进行匹配的正则表达式。Match_parameter用于指定在匹配时是否区分大小写。

SQL> select ename, job

  2    from emp

  3   where regexp_like(job, '(clerk|analyst)', 'i');

 

ENAME      JOB

---------- ---------

SMITH      CLERK

SCOTT      ANALYST

ADAMS      CLERK

JAMES      CLERK

FORD       ANALYST

MILLER     CLERK

转自:http://blog.itpub.net/20948385/viewspace-665735/

你可能感兴趣的:(db_oracle)