(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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...