MYSQL入门学习之二:使用正则表达式搜索_MySQL
正则表达式
bitsCN.com
MYSQL入门学习之二:使用正则表达式搜索
一、正则表达式介绍
正则表达式是用来匹配文本的特殊的串(字符集合)。
二、使用MySQL正则表达式
1、MySQL仅仅支持多数正则表达式实现的一个很小的子集。
2、LIKE匹配整个列值;而REGEXP匹配列值的子串,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。看下面的例子:
[sql]
mysql>select username from v9_admin where username like 'space';
Emptyset (0.00 sec)
mysql>select username from v9_admin where username REGEXP 'space';
+-----------+
|username |
+-----------+
|warmspace |
+-----------+
1 rowin set (0.02 sec)
3、默认MySQL中的正则表达式匹配不区分大小写,可使用BINARY关键字区分大小写,如
[sql]
mysql>select username from v9_admin
-> where username REGEXP BINARY'SPACCE';
Emptyset (0.04 sec)
4、进行OR匹配:为搜索两个串之一,使用|,如下所示:
[sql]
mysql>select roleid from v9_admin_role
-> where roleid REGEXP '1|3';
+--------+
|roleid |
+--------+
| 1 |
| 3 |
+--------+
2 rowsin set (0.00 sec)
5、匹配几个字符之一:匹配任何单一字符。如下所示:
[sql]
mysql>select name from v9_collection_node
-> where name REGEXP '005-[123]';
+-----------------+
|name |
+-----------------+
|101-02-01-005-2 |
|101-02-01-005-1 |
|101-02-01-005-3 |
+-----------------+
3 rowsin set (0.00 sec)
正如所见,[]是另一种形式的OR语句。'005-[123]'与’005-[1|2|3]’是等价的。
匹配除给定字符外的字符:
[sql]
mysql>select name from v9_collection_node
-> where name REGEXP '005-[^123]';
+-------------------+
|name |
+-------------------+
|101-02-01-005-4.2 |
|101-02-01-005-4 |
|101-02-01-005-5 |
+-------------------+
3 rowsin set (0.00 sec)
6、可使用-来定义一个范围。如[1-9],[a-b]。
[sql]
mysql>select name from v9_collection_node
-> where name REGEXP '005-[1-3]';
+-----------------+
|name |
+-----------------+
|101-02-01-005-2 |
|101-02-01-005-1 |
|101-02-01-005-3 |
+-----------------+
3 rowsin set (0.00 sec)
7、为了匹配特殊字符,必须用//为前导,例如//-,//.等。这种处理即转义(escaping)。
多数正则表达式实现使用单个反斜杠转义特殊字符,但MYSQL要求两个(MYSQL自己解释一个,正则表达式库解释另一个)。
//也用来引用元字符(具有特殊含义的字符),如下表:
8、为了更方便工作,可以使用预定义的字符集,称为字符类(character class)。
[sql]
mysql> select name fromv9_collection_node
-> where name REGEXP '[[:digit:]]';
+-------------------+
| name |
+-------------------+
| 101-10-01-002-1 |
| 101-02-01-005-4.2 |
| 101-02-01-005-2 |
| 101-02-01-005-1 |
| 101-02-01-005-3 |
| 101-02-01-005-4 |
| 101-02-01-005-5 |
| 101-10-01-002-2 |
| 101-11-04-001-1 |
+-------------------+
9 rowsin set (0.00 sec)
9、使用正则表达式重复元字符匹配多个实例:
[sql]
mysql> select name fromv9_collection_node
-> where name REGEXP '1{2}';
+-----------------+
| name |
+-----------------+
| 101-11-04-001-1 |
+-----------------+
1 rowin set (0.00 sec)
10、定位符(为了匹配特定位置的文本):
[sql]
mysql> select name from v9_collection_node
-> where name REGEXP '2$';
+-------------------+
| name |
+-------------------+
| 101-02-01-005-4.2 |
| 101-02-01-005-2 |
| 101-10-01-002-2 |
+-------------------+
3 rows in set (0.00 sec)
11、使REGEXP起类似LIKE的作用,它们的区别在于LIKE匹配整个串而REGEXP匹配子串。利用定位符,通过用^开始每个表达式,用$结束每个表达式。
12、简单的正则表达式测试:可以在不使用数据库表的情况下用SELECT来测试正则表达式。REGEXP检查总是返回0或1(匹配)。
[sql]
mysql> select 'hello' REGEXP'[0-9]';
+------------------------+
| 'hello' REGEXP '[0-9]' |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.00 sec)
bitsCN.com

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Python作為一種高階程式語言,易於學習和使用。一旦需要編寫Python程式時,無法避免地遇到語法錯誤,表達式語法錯誤是常見的一種。在本文中,我們將討論如何解決Python的表達式語法錯誤。表達式語法錯誤是Python中最常見的錯誤之一,它通常是由於錯誤的使用語法或缺少必要組件而導致的。在Python中,表達式通常由數字、字串、變數和運算子組成。最常見的

在C或C++中,逗號「,」有不同的用途。在這裡我們將了解如何使用它們。逗號作為運算符。逗號運算符是一個二元運算符,它計算第一個操作數,然後丟棄結果,然後計算第二個運算符並傳回值。逗號運算子在C或C++中的優先權最低。範例#include<stdio.h>intmain(){ intx=(50,60); inty=(func1(),func2());}這裡60將被指派給x。對於下一語句,將會先執行func1(

C語言中指數函數表達式的寫法介紹及代碼範例什麼是指數函數指數函數是數學中一類常見的函數,可以表示為f(x)=a^x的形式,其中a為底數,x為指數。指數函數主要用來描述指數成長或指數衰減的情況。指數函數的程式碼範例在C語言中,我們可以使用數學庫中的pow()函數來計算指數函數,以下是一個範例程式:#include

Java中的lambda表達式隨著Java8的發布,lambda表達式成為了Java開發者們最關注和討論的話題之一。 Lambda表達式可以簡化Java程式設計師繁瑣的書寫方式,同時也能夠提升程式的可讀性和維護性。在本文中,我們將深入探討Java中的lambda表達式,以及它們如何在Java程式碼中提供更簡單、更直覺的程式設計體驗。

lambda表達式是一種匿名函數,它可以很方便地用於遍歷集合。在這篇文章中,我們將介紹如何使用lambda表達式遍歷集合,並提供具體的程式碼範例。在Python中,lambda表達式的語法格式如下:lambda參數列表:表達式lambda表達式的參數列表可以包含一個或多個參數,並用逗號隔開。表達式是lambda函數的回傳值。下面我們來看一個簡單的例子,假設

Lambda表達式的簡介與基本語法Lambda表達式由一個函數參數列表,一個冒號和一個函數體組成。函數參數列表與普通函數的參數列表相同,函數體則是表達式,而不是一組語句。 #範例:傳回一個函數,該函數接收兩個數字並傳回它們的和sum=lambdax,y:x+yLambda表達式的應用程式場景Lambda表達式非常適合用作回調函數、濾波器函數和映射函數。回調函數:回呼函數是指在另一個函數中呼叫的函數。 Lambda表達式可以輕鬆建立回呼函數,而無需聲明其名稱。濾波器函數:濾波器函數用於從序列中過濾出滿

Lambda表達式,顧名思義,就是一種以箭頭符號(->)為核心的匿名函數。它允許你將程式碼區塊作為參數傳遞給其他方法,或將其儲存到變數中以供以後使用。 Lambda表達式語法簡潔、易於理解,非常適合處理資料流和平行計算。 1.Lambda表達式的基本語法Lambda表達式的基本語法如下:(參數列表)->{程式碼區塊}其中,參數列表和程式碼區塊都是可選的。如果只有一個參數,可以省略括號。如果程式碼區塊只有一行,可以省略大括號。例如,以下程式碼區塊使用Lambda表達式實現了將數字加1的功能:List

隨著電腦技術的快速發展,程式語言也不斷地升級和完善。其中,PHP作為常用的Web開發語言,也不斷地推陳出新,不斷推出新的版本。最近,PHP8.0版本的發布引起了廣泛的關注。其中,新版本中對於異常處理機制的改進引起了許多人的注意。本文將圍繞著PHP8.0中的try語句區塊支援表達式這個主題展開討論。一、PHP8.0異常處理機制的改進在先前的版本中,P
