(Les19 Regular expression support)[20180106]

来源:https://www.cnblogs.com/also-brook/archive/2018/01/06/8215671.html
-Advertisement-
Play Games

學習目標 -正則元字元串 -SQL語句中使用正則搜索 -SQL語句中使用正則匹配 -SQL語句中使用正則替代字元串 正則表達式 Oracle資料庫10g引入對正則表達式的支持。 實現了符合UNIX可移植操作系統(POSIX)標準,由電氣和電子工程師協會(IEEE)控制,ASCII數據匹配的語義和語法 ...


學習目標     -正則元字元串     -SQL語句中使用正則搜索     -SQL語句中使用正則匹配     -SQL語句中使用正則替代字元串   正則表達式     Oracle資料庫10g引入對正則表達式的支持。     實現了符合UNIX可移植操作系統(POSIX)標準,由電氣和電子工程師協會(IEEE)控制,ASCII數據匹配的語義和語法。     正則表達式是一種描述簡單和複雜的搜索和操作模式的方法。   正則(POSIX )元字元     '*' 匹配前面的表達式一次或多次     '|' 指明兩項之間選擇其一     '^' 匹配輸入字元串的開始位置,註意,若是在方括弧表達式中使用^,此時它表示不接受該字元集。     '[]' 標記一個中括弧表達式     '{m}'  表示出現幾次     '{m,n}' 表示出現次數的範圍值 m<=出現次數<=n     '\'  有4種不同含義,'\'反斜杠自身、\num 匹配的引用、\n轉義符和什麼都不是。     '+'  匹配前面的子表達式一次或多次     '?' 匹配前面的子表達式零次或一次     '.' 匹配除換行符之外的任何單字元     '()' 標記一個子表達式的開始和結束位置      '[::]' 表示是一個字元簇 :             [[:alpha:]] 任何字母             [[:digit:]] 任何數字             [[:alnum:]] 任何字母和數字             [[:space:]] 空白字元             [[:upper:]] 大寫字母             [[:lowe:]] 小寫字母             [[:punct:]] 任何標點符號             [[:xdigit:]] 任何16進位的數字,相當於[0-9a-fA-F]                 正則表達式函數             REGEXP_LIKE 與LIKE的功能相似,匹配相似字元串             REGEXP_REPLACE 與REPLACE功能相似,替換字元串             REGEXP_INSTR 與INSTR功能相似,標識字元下標             REGEXP_SUBSTR 與SUBTR功能相似,截取指定位置字元串             REGEXP_COUNT 與COUNT相似,計算某個樣式反覆出現的次數               它們在用法上與Oracle SQL函數LIKE、INSTR、SUBSTR、REPLACE用法相同,但是它們使用POSIX正則表達式替代了老的百分號(%)和通配符(_)字元。             REGEXP_LIKE (srcstr,pattern [,match_option])         REGEXP_INSTR (srcstr,pattern [,position [,occurrence [,return_option [,match_option]]]])         REGEXP_SUBSTR (srcstr,pattern [,position [,occurrence [,match_option]]])         REGEXP_REPLACE (srcstr,pattern [,replacestr [,position [, occurrence [,match_option]]]])    
例子一
求last_name中含有G[一個字元]g的名稱
select * from employees
where  regexp_like (last_name,'(G.g){1}')  ;
LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Gaga                         203        200

例子二
insert into employees values('Regexp02_test',208,200);
求出last_name名稱中含有數字的
select *
from employees
where regexp_instr(last_name,'[[:digit:]]')>1 ;
 
LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Regexp02_test                208        200
 
例子三
截取last_name數值之前的字元串
col last_name format a20
select regexp_substr(last_name,'[[:alpha:]]*') last_name,employee_id,manager_id
from employees;
 
LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Dereck                       100          1
Gary                         200        100
Klec                         300        100
Gaga                         203        200
Wendy                        204        200
Xi                           205        200
Tinan                        206        200
Ling                         207        200
Owen                         301        300
Yi                           302        300
Regexp                       208        200
11 rows selected.
 
例子四
將last_name中的數值替換成**號
col last_name format a20
select regexp_replace(last_name,'[[:digit:]]','*') last_name,employee_id,manager_id
from employees;
LAST_NAME            EMPLOYEE_ID MANAGER_ID
-------------------- ----------- ----------
Dereck                       100          1
Gary                         200        100
Klec                         300        100
Gaga                         203        200
Wendy                        204        200
Xi                           205        200
Tinan                        206        200
Ling                         207        200
Owen                         301        300
Yi                           302        300
Regexp**_test                208        200
 
11 rows selected.
 
例子五
計算last_name中數值出現的次數
col last_name format a20
select last_name,regexp_count(last_name,'[[:digit:]]') t_count,employee_id,manager_id
from employees;
 
LAST_NAME               T_COUNT EMPLOYEE_ID MANAGER_ID
-------------------- ---------- ----------- ----------
Dereck                        0         100          1
Gary                          0         200        100
Klec                          0         300        100
Gaga                          0         203        200
Wendy                         0         204        200
Xi                            0         205        200
Tinan                         0         206        200
Ling                          0         207        200
Owen                          0         301        300
Yi                            0         302        300
Regexp02_test                 2         208        200
 
11 rows selected.
 

 

學習總結:     1.正則表達式的作用及oracle 10g開始支持功能並遵循(POSIX)標準     2.正則表達式所需的元操作字元     3.正則表達式常見的幾個函數並且實踐如果使用


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 每次更新、發佈新的dll到Nuget,都好煩,煩命令行的各種操作,今天就寫一個WinForm小工具來發佈自己的項目到Nuget: 由於此工具沒啥技術含量(所調用的DLL已封裝併發布到Nuget,可以在VSNuget包管理器搜索Gaofajin),故此處就不貼代碼。,代碼在附件中打包上傳! https ...
  • 最近在做mvc5的練習 ,結果到了資料庫連接這一階段就出現了問題,開始我以為<add name="MovieDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies ...
  • 假設你想在Linux Nginx中用不同的功能變數名稱訪問不同的目錄,這時就要配置多個vhost,具體配置如下,假設網站根目錄設定在/var/www/ 1、在/var/www/下新建兩個目錄 2、編輯/etc/nginx/nginx.conf 3、在/etc/nginx/conf.d下新建兩個conf文件, ...
  • 一、find命令的好處 有時會經常在目錄下找文件或目錄的具體存放在哪,但是該目錄下的文件又很多不好找出。這時並不需要手動查看所有的文件,用find命令來幫助查找就行了。所以文件或目錄一定歸好類,存放有序,這樣找起來會方便許多。如果遇到網路高峰期,儘量少用find命令,網路高峰期查找會慢許多。 二、f ...
  • 一. 系統休眠(crontab) 示例說明(創建一個 root 定時任務實現每天晚上 11 點 15 分定時關機): 示例說明(僅在周一至周五運行) 另外可以直接在/etc/crontab文件中添加定時服務 二. 喚醒(Wake-On-LAN) 1. 查看是否直接Wake-On-LAN和開啟,必須支 ...
  • 1、安裝vmware和創建虛擬機2、載入centos6.5的鏡像3、linux的介紹linux是一個操作系統(免費開源),來源unix linux是一個典型的樹形文件系統,一切都是基於文件。"/"稱之linux的根目錄即頂級目錄linux的每一個軟體都有缺點的用途,最小化安裝linux中僅有一個超級 ...
  • 一個用c語言寫的程式把他編譯成電腦可執行的文件,一般有4個步驟 1,預處理:這個步驟,主要是包含頭文件,展開巨集定義 gcc -E helloworld.c -o helloworld.i 2,生成彙編代碼 gcc -S helloworld.i -o helloworld.s 3,編譯彙編 gcc ...
  • Ubuntu中安裝mysql5.7時沒有設置密碼,使用mysql -u root -p 不能連接mysql服務 在網上查有兩種方式: 1. 第一次安裝,mysql5.7設置了個預設密碼在某個目錄下存放,使用預設密碼登錄後,會提示修改密碼。這個方法暫時沒有嘗試 2.修改mysql的配置文件sudo v ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...