一、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