最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle中RegExp_Like正則表達式基本用法舉例

 更新時間:2024年02月19日 10:05:53   作者:風_Sux123  
這篇文章主要給大家介紹了關于Oracle中RegExp_Like正則表達式基本用法的相關資料,REGEXP_LIKE(x,pattern)函數的功能類似于like運算符,用于判斷源字符串是否匹配或包含指定模式的子串,需要的朋友可以參考下
--基本用法,是否包含某字符串 =like %36%
select * from k_micfo where  regexp_like(loginid,'36');
 
if regexp_like(str,'^[0-9\.]+$')  --只包含數字0-9,,小數點.
 
--oracle判斷字段是否是純數字 (四種寫法結果一樣)
select * from k_micfo where regexp_like(loginid,'^[0-9]+[0-9]$');
select * from k_micfo where regexp_like(loginid,'^[0-9]+$');   --'+' 匹配前面的子表達式一次或多次。
select * from k_micfo where regexp_like(loginid,'^[[:digit:]]+$');
select * from k_micfo where  not regexp_like(loginid,'[^0-9]');  --^表示排除
 
--不是0-9純數字 (二種寫法結果一樣)
select * from k_micfo where  regexp_like(loginid,'[^0-9]');  --^表示排除
select * from k_micfo where not regexp_like(loginid,'^[[:digit:]]+$');
 
--判斷字段中是否只包含0-9,-字符(二種寫法結果一樣)
select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]$');  --'|' 指明兩項之間的一個選擇。相當于or 例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數字組合成的字符串。
select * from k_micfo where  regexp_like(APPLICATION,'[0-9-]');
 
--判斷字段中是否只包含0-9,-字符, 或者空格 (五種寫法結果一樣)
select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]$') or regexp_like(APPLICATION,'^[ ]$');
select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]$|^[ ]$');  
select * from k_micfo where regexp_like(APPLICATION,'(^[0-9]|[-]$)|(^[ ]$)'); --'( )' 標記一個子表達式的開始和結束位置
select * from k_micfo where regexp_like(APPLICATION,'^[0-9]|[-]|[ ]$');
select * from k_micfo where  regexp_like(APPLICATION,'[0-9- ]'); 

經測試oracle中的RegExp_Like跟標準正則表達式用法基本一致,”|“ 就是or的意思

ORACLE中的支持正則表達式的函數主要有下面四個:

  • 1,REGEXP_LIKE :與LIKE的功能相似
  • 2,REGEXP_INSTR :與INSTR的功能相似
  • 3,REGEXP_SUBSTR :與SUBSTR的功能相似
  • 4,REGEXP_REPLACE :與REPLACE的功能相似

它們在用法上與Oracle SQL 函數LIKE、INSTR、SUBSTR 和REPLACE 用法相同,

但是它們使用POSIX 正則表達式代替了老的百分號(%)和通配符(_)字符。

POSIX 正則表達式由標準的元字符(metacharacters)所構成:

  • '^' 匹配輸入字符串的開始位置,在方括號表達式中使用,此時它表示不接受該字符集合。
  • '$' 匹配輸入字符串的結尾位置。如果設置了 RegExp 對象的 Multiline 屬性,則 $ 也匹
  • 配 '\n' 或 '\r'。
  • '.' 匹配除換行符之外的任何單字符。
  • '?' 匹配前面的子表達式零次或一次。
  • '+' 匹配前面的子表達式一次或多次。
  • '*' 匹配前面的子表達式零次或多次。
  • '|' 指明兩項之間的一個選擇。例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數字組合成的
  • 字符串。
  • '( )' 標記一個子表達式的開始和結束位置。
  • '[]' 標記一個中括號表達式。
  • '{m,n}' 一個精確地出現次數范圍,m=<出現次數<=n,'{m}'表示出現m次,'{m,}'表示至少出現m次。
  • \num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。

字符簇: 

  • [[:alpha:]] 任何字母。
  • [[:digit:]] 任何數字。
  • [[:alnum:]] 任何字母和數字。
  • [[:space:]] 任何白字符。
  • [[:upper:]] 任何大寫字母。
  • [[:lower:]] 任何小寫字母。
  • [[:punct:]] 任何標點符號。
  • [[:xdigit:]] 任何16進制的數字,相當于[0-9a-fA-F]。

各種操作符的運算優(yōu)先級

\轉義符
(), (?:), (?=), [] 圓括號和方括號
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, anymetacharacter 位置和順序

--創(chuàng)建表
create table fzq
(
id varchar(4),
value varchar(10)
);
--數據插入
insert into fzq values('1','1234560');
insert into fzq values('2','1234560');
insert into fzq values('3','1b3b560');
insert into fzq values('4','abc');
insert into fzq values('5','abcde');
insert into fzq values('6','ADREasx');
insert into fzq values('7','123 45');
insert into fzq values('8','adc de');
insert into fzq values('9','adc,.de');
insert into fzq values('10','1B');
insert into fzq values('10','abcbvbnb');
insert into fzq values('11','11114560');
insert into fzq values('11','11124560');

--regexp_like
--查詢value中以1開頭60結束的記錄并且長度是7位
select * from fzq where value like '1____60';
select * from fzq where regexp_like(value,'1....60');
--查詢value中以1開頭60結束的記錄并且長度是7位并且全部是數字的記錄。
--使用like就不是很好實現了。
select * from fzq where regexp_like(value,'1[0-9]{4}60');
-- 也可以這樣實現,使用字符集。
select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');
-- 查詢value中不是純數字的記錄
select * from fzq where not regexp_like(value,'^[[:digit:]]+$');
-- 查詢value中不包含任何數字的記錄。
select * from fzq where regexp_like(value,'^[^[:digit:]]+$');
--查詢以12或者1b開頭的記錄.不區(qū)分大小寫。
select * from fzq where regexp_like(value,'^1[2b]','i');
--查詢以12或者1b開頭的記錄.區(qū)分大小寫。
select * from fzq where regexp_like(value,'^1[2B]');
-- 查詢數據中包含空白的記錄。
select * from fzq where regexp_like(value,'[[:space:]]');
--查詢所有包含小寫字母或者數字的記錄。
select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
--查詢任何包含標點符號的記錄。
select * from fzq where regexp_like(value,'[[:punct:]]');

正則表達式用于字符串處理、表單驗證等場合,實用高效。現將一些常用的表達式收集于此,以備不時之需。

用戶名:/^[a-z0-9_-]{3,16}$/

密碼:/^[a-z0-9_-]{6,18}$/

十六進制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/

電子郵箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

HTML 標簽:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/

Unicode編碼中的漢字范圍:/^[u4e00-u9fa5],{0,}$/

匹配中文字符的正則表達式: [\u4e00-\u9fa5]
評注:匹配中文還真是個頭疼的事,有了這個表達式就好辦了

匹配雙字節(jié)字符(包括漢字在內):[^\x00-\xff]
評注:可以用來計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)

匹配空白行的正則表達式:\n\s*\r
評注:可以用來刪除空白行

匹配HTML標記的正則表達式:<(\S*?)[^>]*>.*?|<.*? />
評注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對于復雜的嵌套標記依舊無能為力

匹配首尾空白字符的正則表達式:^\s*|\s*$
評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式

匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
評注:表單驗證時很實用

匹配網址URL的正則表達式:[a-zA-z]+://[^\s]*
評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求

匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
評注:表單驗證時很實用

匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7}
評注:匹配形式如 0511-4405222 或 021-87888822

匹配騰訊QQ號:[1-9][0-9]{4,}
評注:騰訊QQ號從10000開始

匹配中國大陸郵政編碼:[1-9]\d{5}(?!\d)
評注:中國大陸郵政編碼為6位數字

匹配身份證:\d{15}|\d{18}
評注:中國大陸的身份證為15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
評注:提取ip地址時有用

匹配特定數字:

  • ^[1-9]\d*$    //匹配正整數
  • ^-[1-9]\d*$  //匹配負整數
  • ^-?[1-9]\d*$  //匹配整數
  • ^[1-9]\d*|0$  //匹配非負整數(正整數 + 0)
  • ^-[1-9]\d*|0$  //匹配非正整數(負整數 + 0)
  • ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$  //匹配正浮點數
  • ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配負浮點數
  • ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮點數
  • ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$  //匹配非負浮點數(正浮點數 + 0)
  • ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(負浮點數 + 0)

評注:處理大量數據時有用,具體應用時注意修正

匹配特定字符串:

  • ^[A-Za-z]+$ //匹配由26個英文字母組成的字符串
  • ^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串
  • ^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串
  • ^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字符串
  • ^\w+$ //匹配由數字、26個英文字母或者下劃線組成的字符串

去除精度緯度中非浮點數

select jd,wd from xx_xa_xsczaqpc t where t.id not in  (

select id from xx_xa_xsczaqpc where regexp_like(jd,'^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$')) ;

是雙小數點的數

select xx_jbxx_id,jd,wd from xx_xa_xsczaqpc t where regexp_like(jd,'^[1-9]\d*\.\d*\.\d*[1-9]\d*$')

總結

到此這篇關于Oracle中RegExp_Like正則表達式基本用法舉例的文章就介紹到這了,更多相關Oracle RegExp_Like正則表達式用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • oracle在導入數據時報600錯誤的解決方法

    oracle在導入數據時報600錯誤的解決方法

    最近在工作中進行oracle數據庫導入的時候遇到了600錯誤,通過查找相關的資料,最終終于解決了,下面這篇文章主要給大家介紹了關于oracle在導入數據時報600錯誤的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • oracle數據庫導入導出命令解析

    oracle數據庫導入導出命令解析

    這篇文章主要介紹了oracle數據庫導入導出命令解析,小編覺得還是比較不錯的,需要的朋友可以參考下。
    2017-10-10
  • [Oracle] 淺析令人抓狂的ORA-01555問題

    [Oracle] 淺析令人抓狂的ORA-01555問題

    首先要說明的一點是:ORA-01555錯誤是一個“安全”的錯誤,它不會造成數據丟失或損壞,只是會讓接收到該錯誤的查詢無法繼續(xù)。以下就是對發(fā)生ORA-01555錯誤的原因進行了介紹,需要的朋友可以參考下
    2013-07-07
  • win10 oracle11g安裝報錯問題集合 附解決方法

    win10 oracle11g安裝報錯問題集合 附解決方法

    這篇文章主要為大家總結了win10 oracle11g安裝報錯問題的產生原因,和oracle安裝報錯的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • oracle如何使用java source調用外部程序

    oracle如何使用java source調用外部程序

    這篇文章主要為大家介紹了oracle如何使用java source調用外部程序,感興趣的小伙伴們可以參考一下
    2016-09-09
  • SQL外鍵(Foreign?Key)實際應用示例?詳細講解

    SQL外鍵(Foreign?Key)實際應用示例?詳細講解

    外鍵與主鍵相對,作用就是通過主外鍵的之間關系使對張表中的數據更好的關聯,這篇文章主要介紹了SQL外鍵(Foreign?Key)實際應用示例?的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-02-02
  • oracle bbed恢復刪除數據實例

    oracle bbed恢復刪除數據實例

    在oracle中bbed恢復刪除數據實例
    2013-11-11
  • oracle如何恢復被覆蓋的存儲過程

    oracle如何恢復被覆蓋的存儲過程

    如果你不小心覆蓋了之前的存儲過程,那得趕緊閃回,時長越長閃回的可能性越小,下面為大家介紹下恢復原理
    2014-05-05
  • Oracle SID存在解決方法

    Oracle SID存在解決方法

    如果有個別DLL文件無法刪除的情況,則不用理會,重新啟動,開始新的安裝
    2009-06-06
  • Oracle數據庫常用命令整理(實用方法)

    Oracle數據庫常用命令整理(實用方法)

    這篇文章主要介紹了Oracle數據庫常用命令整理(實用方法),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06

最新評論

礼泉县| 鱼台县| 琼结县| 靖安县| 和林格尔县| 高要市| 弥勒县| 乌苏市| 宁城县| 扶余县| 许昌市| 眉山市| 泰宁县| 乌拉特前旗| 盐山县| 娄烦县| 资阳市| 依安县| 高密市| 渝北区| 松江区| 红原县| 志丹县| 荣昌县| 太原市| 文登市| 开鲁县| 曲靖市| 凤翔县| 安图县| 竹山县| 乐亭县| 伊春市| 邵阳县| 康平县| 邓州市| 汾西县| 荥阳市| 塘沽区| 大化| 武平县|