MySql官方手册学习笔记2 MySql的模糊查询和正则表达式_MySQL
正则表达式
bitsCN.comSQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。在 MySQL中,SQL的模式默认是忽略大小写的。下面给出一些例子。注意使用SQL模式时,不能使用=或!=;而应使用LIKE或NOT LIKE比较操作符。
要想找出以“b”开头的名字:
mysql> <strong>SELECT * FROM pet WHERE name LIKE 'b%';</strong>
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+
要想找出以“fy”结尾的名字:
mysql> <strong>SELECT * FROM pet WHERE name LIKE '%fy';</strong>
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
要想找出包含“w”的名字:
mysql> <strong>SELECT * FROM pet WHERE name LIKE '%w%';</strong>
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
要想找出正好包含5个字符的名字,使用“_”模式字符:
mysql> <strong>SELECT * FROM pet WHERE name LIKE '_____';</strong>
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
由MySQL提供的模式匹配的其它类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
扩展正则表达式的一些字符是:
‘.'匹配任何单个的字符。
字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
“ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
- 如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
- 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询:
为了找出以“b”开头的名字,使用“^”匹配名字的开始:
mysql> <strong>SELECT * FROM pet WHERE name REGEXP '^b';</strong>
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+
如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b'。
mysql> <strong>SELECT * FROM pet WHERE name REGEXP BINARY '^b';</strong>
<strong> </strong>
为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:
mysql> <strong>SELECT * FROM pet WHERE name REGEXP 'fy$';</strong>
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
为了找出包含一个“w”的名字,使用以下查询:
mysql> <strong>SELECT * FROM pet WHERE name REGEXP 'w';</strong>
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
既然如果一个正则表达式出现在值的任何地方,其模式匹配了,就不必在先前的查询中在模式的两侧放置一个通配符以使得它匹配整个值,就像你使用了一个SQL模式那样。
为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
mysql> <strong>SELECT * FROM pet WHERE name REGEXP '^.....$';</strong>
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
你也可以使用“{n}”“重复n次”操作符重写前面的查询:
mysql> <strong>SELECT * FROM pet WHERE name REGEXP '^.{5}$';</strong>
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

在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表達式可以輕鬆建立回呼函數,而無需聲明其名稱。濾波器函數:濾波器函數用於從序列中過濾出滿

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