MySQL中【正則表達式】用法

MySQL正則表達式通過 REGEXPRLIKE 操作符實現(兩者等價),用于在 WHERE 子句中進行復雜的字符串模式匹配。以下是核心用法和示例:


一、基礎語法

SELECT column_name 
FROM table_name 
WHERE column_name REGEXP 'pattern';
-- 或
WHERE column_name RLIKE 'pattern';

二、常用元字符

元字符說明示例
^匹配開頭'^a' → 以 “a” 開頭
$匹配結尾'z$' → 以 “z” 結尾
.匹配任意單個字符'a.c' → “abc”, “axc”
[...]字符集合'[aeiou]' → 匹配任一元音
[^...]排除字符集合'[^0-9]' → 非數字字符
*前一個字符0次或多次'ab*c' → “ac”, “abbc”
+前一個字符1次或多次'ab+c' → “abc”, “abbc” (排除"ac")
{n}前一個字符n次'a{3}' → “aaa”
|或操作'cat|dog' → “cat” 或 “dog”

三、實際示例

  1. 匹配以數字開頭的字符串

    SELECT name FROM products WHERE name REGEXP '^[0-9]';
    
  2. 匹配包含特定單詞的文本

    SELECT content FROM logs WHERE content REGEXP 'error|warning';
    
  3. 匹配郵箱格式

    SELECT email FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$';
    
  4. 匹配連續重復字符

    SELECT word FROM dictionary WHERE word REGEXP '(.)\\1'; -- 如 "book"('oo')
    

四、與 LIKE 的區別

特性REGEXPLIKE
功能復雜模式匹配簡單通配符 (%, _)
大小寫敏感默認不敏感(除非二進制字符串)依賴字段排序規則
性能通常較慢(全表掃描)可能使用索引

五、進階函數(MySQL 8.0+)

  1. REGEXP_REPLACE()
    替換匹配的字符串:

    SELECT REGEXP_REPLACE('hello 123', '[0-9]+', 'world'); -- 結果: 'hello world'
    
  2. REGEXP_SUBSTR()
    提取匹配的子串:

    SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+'); -- 結果: 'abc'
    
  3. REGEXP_INSTR()
    返回匹配的起始位置:

    SELECT REGEXP_INSTR('abc123', '[0-9]+'); -- 結果: 4
    

六、注意事項

  1. 轉義特殊字符:使用雙反斜杠 \\(如 \\+, \\.)。
  2. 性能優化:避免在大型表上使用 REGEXP,優先考慮全文索引或預處理。
  3. 大小寫敏感:如需區分大小寫,使用 BINARY 關鍵字:
    WHERE BINARY column_name REGEXP 'Pattern';
    

經典案例:提取文本中的金額

SELECT REGEXP_SUBSTR(description, '[0-9]+\\.[0-9]{2}') AS amount 
FROM orders 
WHERE description REGEXP '[0-9]+\\.[0-9]{2}';

匹配如 "Price: 99.99 USD" 中的 99.99

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84399.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Prompt工程學習之自我一致性

自我一致性 (Self-consistency) 概念:該技術通過對同一問題采樣不同的推理路徑,并通過多數投票選擇最一致的答案,來解決大語言模型(LLM)輸出的可變性問題。通過使用不同的溫度(temp…

gh hugging face使用

install sudo dpkg -i gh_2.74.0_linux_amd64.deb gh auth login gh auth login ? Where do you use GitHub? GitHub.com ? What is your preferred protocol for Git operations on this host? HTTPS ? Authenticate Git with your GitHub credentials? Yes ? How wo…

2025.6.9總結(利與弊)

凡事都有兩面性。在大廠上班也不例外。今天找開發定位問題,從一個接口人不斷溯源到另一個 接口人。有時候,不知道是誰的責任填。將工作內容分的很細,每個人負責其中的一小塊。我清楚的意識到,自己就是個可以隨時替換的螺絲釘&…

數據集-目標檢測系列- 口紅嘴唇 數據集 lips >> DataBall

貴在堅持! * 相關項目 1)數據集可視化項目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)數據集訓練、推理相關項目:GitHub - XIAN-HHappy/ultralytics-yolo-webui: ultralytics-yo…

[論文閱讀] 人工智能+項目管理 | 當 PMBOK 遇見 AI:傳統項目管理框架的破局之路

當PMBOK遇見AI:傳統項目管理框架的“AI適配指南” 論文信息 arXiv:2506.02214 Is PMBOK Guide the Right Fit for AI? Re-evaluating Project Management in the Face of Artificial Intelligence Projects Alexey Burdakov, Max Jaihyun Ahn Subjects: Software …

CentOS7關閉防火墻、Linux開啟關閉防火墻

文章目錄 一、firewalld開啟、關閉防火墻1、查看防火墻狀態 一、firewalld開啟、關閉防火墻 以下命令在linux系統CentOS7中操作開啟關閉防火墻 # 查詢防火墻狀態 systemctl status firewalld.service # 開啟防火墻 systemctl start firewalld.service # 開機自啟動防火墻 syste…

Spring是如何實現無代理對象的循環依賴

無代理對象的循環依賴 什么是循環依賴解決方案實現方式測試驗證 引入代理對象的影響創建代理對象問題分析 源碼見:mini-spring 什么是循環依賴 循環依賴是指在對象創建過程中,兩個或多個對象相互依賴,導致創建過程陷入死循環。以下通過一個簡…

Android 之 kotlin 語言學習筆記三(Kotlin-Java 互操作)

參考官方文檔:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬關鍵字 不要使用 Kotlin 的任何硬關鍵字作為方法的名稱 或字段。允許使用 Kotlin 的軟關鍵字、修飾符關鍵字和特殊標識…

從 GreenPlum 到鏡舟數據庫:杭銀消費金融湖倉一體轉型實踐

作者:吳岐詩,杭銀消費金融大數據應用開發工程師 本文整理自杭銀消費金融大數據應用開發工程師在StarRocks Summit Asia 2024的分享 引言:融合數據湖與數倉的創新之路 在數字金融時代,數據已成為金融機構的核心競爭力。杭銀消費金…

Bean 作用域有哪些?如何答出技術深度?

導語: Spring 面試繞不開 Bean 的作用域問題,這是面試官考察候選人對 Spring 框架理解深度的常見方式。本文將圍繞“Spring 中的 Bean 作用域”展開,結合典型面試題及實戰場景,幫你厘清重點,打破模板式回答&#xff0c…

基于 Spring Boot 策略模式的短信服務提供商動態切換實現

一、整體設計思路 為了實現在短信服務提供商變更時,不修改現有代碼就能無縫切換到新服務實現,可采用策略模式結合依賴注入以及配置中心化管理的方式來設計軟件系統。 二、 具體實現步驟 1. 定義統一接口(以短信服務為例,接口命名為 SmsService) 創建一個抽象的接口,用…

解決SQL Server SQL語句性能問題(9)——SQL語句改寫(1)

9.4. SQL語句改寫 目前主流關系庫的高版本中,特別是作為主流商業關系庫的SQL Server來講,大部分場景中,同一語義和結果集的SQL語句,其不同寫法并不會影響CBO為SQL語句生成和選擇最合適、最高效的查詢計劃。但少數情況下,不同寫法的同一語義和結果集的SQL語句,CBO也許會為…

設計模式復習小結

1.容易忘得設計原則 接口隔離:指接口中的功能太雜則可以拆分一下。防止實現類實現了接口后自動依賴了一些不需要的功能。不同功能拆分成不同的接口。 里氏代換:強調父類能出現的地方,子類一定能正常跑。 迪米特法則:又稱最少知…

昇騰CANN集合通信技術解讀——細粒度分級流水算法

隨著AI技術的演進,模型的計算復雜度和參數量呈現幾何級數增長,這使得傳統單機單卡部署在算力供給與顯存容量方面顯得力不從心,從而直接推動了分布式訓練/推理技術的快速發展。今年年初爆火的DeepSeek在訓練及推理Prefill階段采用了分級流水Al…

水泥廠自動化升級利器:Devicenet轉Modbus rtu協議轉換網關

在水泥廠的生產流程中,工業自動化網關起著至關重要的作用,尤其是JH-DVN-RTU疆鴻智能Devicenet轉Modbus rtu協議轉換網關,為水泥廠實現高效生產與精準控制提供了有力支持。 水泥廠設備眾多,其中不少設備采用Devicenet協議。Devicen…

使用Matplotlib創建炫酷的3D散點圖:數據可視化的新維度

文章目錄 基礎實現代碼代碼解析進階技巧1. 自定義點的大小和顏色2. 添加圖例和樣式美化3. 真實數據應用示例實用技巧與注意事項完整示例(帶樣式)應用場景在數據科學和可視化領域,三維圖形能為我們提供更豐富的數據洞察。本文將手把手教你如何使用Python的Matplotlib庫創建引…

Copilot for Xcode (iOS的 AI輔助編程)

Copilot for Xcode 簡介Copilot下載與安裝 體驗環境要求下載最新的安裝包安裝登錄系統權限設置 AI輔助編程生成注釋代碼補全簡單需求代碼生成輔助編程行間代碼生成注釋聯想 代碼生成 總結 簡介 嘗試使用了Copilot,它能根據上下文補全代碼,快速生成常用…

React 進階特性

1. ref ref 是 React 提供的一種機制,用于訪問和操作 DOM 元素或 React 組件的實例。它可以用于獲取某個 DOM 元素的引用,從而執行一些需要直接操作 DOM 的任務,例如手動設置焦點、選擇文本或觸發動畫。 1.1. 使用 ref 的步驟 1. 創建一個 ref:使用 React.createRef 或 …

基于PHP的連鎖酒店管理系統

有需要請加文章底部Q哦 可遠程調試 基于PHP的連鎖酒店管理系統 一 介紹 連鎖酒店管理系統基于原生PHP開發,數據庫mysql,前端bootstrap。系統角色分為用戶和管理員。 技術棧 phpmysqlbootstrapphpstudyvscode 二 功能 用戶 1 注冊/登錄/注銷 2 個人中…

【大廠機試題解法筆記】報文響應時間

題目 IGMP 協議中,有一個字段稱作最大響應時間 (Max Response Time) ,HOST收到查詢報文,解折出 MaxResponseTime 字段后,需要在 (0,MaxResponseTime] 時間 (s) 內選取隨機時間回應一個響應報文,如果在隨機…