regexp_like判断是否含有非数字(正则表达式)

一、regexp_like函数

1、语法

REGEXP_LIKE(source_char,pattern[,match_option])  //正则表达式匹配函数
REGEXP_REPLACE(source_char,pattern[,replacestr[,position[,occurrence[,match_option]]]])  //正则表达式替换函数
REGEXP_INSTR(source_char,pattern[,position[,occurrence[,return_option[,match_option]]]])  //正则表达式返回字符出现位置
REGEXP_SUBSTR(source_char,pattern[,position[,occurrence[,match_option]]])  //正则表达式截取某字符串
REGEXP_COUNT(source_char,pattern[,match_option])  //正则表达式统计字符串出现的次数,11g以后的版本

//source_char是源数据
//pattern是表达式
//match_option为c,区分大小写,i是不分大小写(ignore)
//replacestr是替换的字符
//position是开始位置
//occurrence是第几次出现
//return_option为0是返回该字符出现的位置,不为0时返回该字符出现的下一个位置

 

2、正则表达式

(1)、[] 元字符表示 范围

①[.0-9] 表示 小数点和0至9范围内 的字符

②[^.0-9] 表示非 小数点和0至9范围内 的字符

 

(2)、^ 元字符有两种含义

①^[.0-9]匹配以 .0-9开头的字符,^ 匹配字符的开始位置

②[^.0-9]匹配非 .0-9的字符

 

(3)、* 运算符表示 匹配前面的子表达式0次或多次

(4)、+ 运算符表示 匹配前面的子表达式1次或多次

(5)、? 运算符表示 匹配前面的子表达式0次或1次

(6)、$ 运算符表示 匹配字符的结束位置 ,[.0-9]$ 匹配 .0-9结尾的字符

 

3、测试

(1)、匹配非数字

select  (case when regexp_like ('.11','([^.0-9])+') then 1 else 0 end)test from dual
//匹配 .0-9 范围内的字符,返回1表示是非数字,0表示是数字。.11可以当做是数字

 

(2)、测试小数点开头

select 5*'.11' test from dual

 

posted @ 2022-03-01 11:04  微风徐徐$  阅读(2402)  评论(0编辑  收藏  举报