首頁 資料庫 mysql教程 MySQL学习足迹记录07--数据过滤--用正则表达式进行检索_MySQL

MySQL学习足迹记录07--数据过滤--用正则表达式进行检索_MySQL

Jun 01, 2016 pm 01:31 PM
mysql 表達式 記錄

正则表达式

bitsCN.com

MySQL学习足迹记录07--数据过滤--用正则表达式进行检索

 

      本文用到的检索数据

1

mysql> SELECT prod_name FROM products             -> ORDER BY prod_name;+----------------+| prod_name      |+----------------+| .5 ton anvil   || 1 ton anvil    || 2 ton anvil    || Bird seed      || Carrots        || Detonator      || Fuses          || JetPack 1000   || JetPack 2000   || Oil can        || Safe           || Sling          || TNT (1 stick)  || TNT (5 sticks) |+----------------+14 rows in set (0.00 sec)

登入後複製

1.基本字符匹配

1

eg:   mysql> SELECT prod_name FROM products            -> WHERE prod_name REGEXP '1000'        #匹配"1000"            -> ORDER BY prod_name;+--------------+| prod_name    |+--------------+| JetPack 1000 |+--------------+1 row in set (0.00 sec) eg:   mysql> SELECT prod_name FROM products            -> WHERE prod_name REGEXP '.000'       #'.'表示匹配任意一个字符            -> ORDER BY prod_name;+--------------+| prod_name    |+--------------+| JetPack 1000 || JetPack 2000 |+--------------+2 rows in set (0.00 sec)

登入後複製

2.进行OR匹配

为了搜索N个串之一,使用 ‘|’

1

eg:  mysql> SELECT prod_name FROM products           -> WHERE prod_name REGEXP '1000 | 2000'           -> ORDER BY prod_name;+--------------+| prod_name    |+--------------+| JetPack 1000 || JetPack 2000 |+--------------+2 rows in set (0.00 sec)

登入後複製

3.匹配几个字符之一

*匹配特定的单字符,可以通过指定一组【】括起来的字符来完成

1

eg:  mysql> SELECT prod_name FROM products            -> WHERE prod_name REGEXP '[123] Ton'           -> ORDER BY prod_name;+-------------+| prod_name   |+-------------+| 1 ton anvil || 2 ton anvil |+-------------+2 rows in set (0.00 sec)  等效于: mysql> SELECT prod_name FROM products          -> WHERE prod_name REGEXP '[1|2|3] Ton'          -> ORDER BY prod_name;+-------------+| prod_name   |+-------------+| 1 ton anvil || 2 ton anvil |+-------------+2 rows in set (0.00 sec)

登入後複製

4.否定一个字符集‘^'

1

eg:    mysql> SELECT prod_name FROM products             -> WHERE prod_name REGEXP '[^123] Ton'             -> ORDER BY prod_name;+--------------+| prod_name    |+--------------+| .5 ton anvil |+--------------+1 row in set (0.00 sec)

登入後複製

5.匹配范围【n-m】

1

eg:  mysql> SELECT prod_name FROM products            -> WHERE prod_name REGEXP '[1-5] Ton'           -> ORDER BY prod_name;+--------------+| prod_name    |+--------------+| .5 ton anvil || 1 ton anvil  || 2 ton anvil  |+--------------+3 rows in set (0.00 sec)

登入後複製

注:以下操作所用到的表格数据

1

mysql> SELECT vend_name FROM vendors ORDER BY vend_name;+----------------+| vend_name      |+----------------+| ACME           || Anvils R Us    || Furball Inc.   || Jet Set        || Jouets Et Ours || LT Supplies    |+----------------+6 rows in set (0.00 sec)

登入後複製

6.匹配特殊字符,需用//为前导,即转义字符

*MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释另一个)

匹配'.'

1

eg:   mysql> SELECT vend_name FROM vendors            -> WHERE vend_name REGEXP '.'            #未用转义字符,所以不是期望的结果            -> ORDER BY vend_name;+----------------+| vend_name      |+----------------+| ACME           || Anvils R Us    || Furball Inc.   || Jet Set        || Jouets Et Ours || LT Supplies    |+----------------+6 rows in set (0.00 sec)   正确的应为: mysql> SELECT vend_name FROM vendors          -> WHERE vend_name REGEXP '//.'          -> ORDER BY vend_name;+--------------+| vend_name    |+--------------+| Furball Inc. |+--------------+1 row in set (0.00 sec)

登入後複製

#以下7,8,9,10列出的仅作参考,无需记忆

7.匹配字符类

[:alnum:] ==> [a-zA-Z0-9]

[:alpha:] ==> [a-zA-Z]

[:blank:] ==>空格和制表符[//t]

[:cntrl:] ==>ASCII控制字符(ASCII0到31和127)

[:digit:] ==>[0-9]

[:graph:] ==>与[:print:]相同,但不包括空格

[:lower:] ==>[a-z]

[:punct:] ==>即不在[:alnum:]又不在[:cntrl:]中的任意字符

[:space:] ==>包括空格在内的任意空白字符[//f//n//r//t//v]

[:upper:] ==>[A-Z]

[:xdigit:]==>任意十六进制数[a-fA-F0-9]

[:print:] ==>任意可打印字符

8.空白元字符

//f ==>换页

//r ==>回车

//v ==>纵向制表

9.匹配多个实例

重复元字符

* ==> 0个或多个匹配

+ ==> 1个或多个匹配(等于{1,})

? ==> 0个或1个匹配(等于{0,1})

{n} ==> 指定数目的匹配

{n,} ==> 不小于指定数目的匹配

{n,m} ==> 匹配数目的范围(m<=255)

1

eg:  mysql> SELECT prod_name FROM products           -> WHERE prod_name REGEXP &#39;//([0-9] sticks?//) &#39;     #&#39;?&#39;匹配它前面的任何字符的0次或1次出现           -> ORDER BY prod_name;              +----------------+| prod_name      |+----------------+| TNT (1 stick)  || TNT (5 sticks) |+----------------+2 rows in set (0.00 sec) mysql> SELECT prod_name FROM products          -> WHERE prod_name REGEXP &#39;[[:digit:]]{4}&#39;        #匹配连在一起的任意四位数字          -> ORDER BY prod_name;+--------------+| prod_name    |+--------------+| JetPack 1000 || JetPack 2000 |+--------------+2 rows in set (0.00 sec)

登入後複製

10.定位符

*定位元字符

^ ==> 文本的开始

$ ==> 文本的结尾

[[:<:]] ==> 词的开始

[[:>:]] ==> 词的结尾

1

eg: mysql> SELECT prod_name FROM products          -> WHERE prod_name REGEXP &#39;^[0-9//.]&#39;    #&#39;^&#39;定位到串开头,[0-9//.]表示只有在&#39;.&#39;或任一数字为          -> ORDER BY prod_name;                            #串中的第一个字符,才匹配它+--------------+| prod_name    |+--------------+| .5 ton anvil || 1 ton anvil  || 2 ton anvil  |+--------------+3 rows in set (0.00 sec)

登入後複製

 

 

11.'^'的双重用途:在集合'[]'中用来否定集合,否则,用来指串的开始处

bitsCN.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP 的大數據結構處理技巧 PHP 的大數據結構處理技巧 May 08, 2024 am 10:24 AM

PHP 的大數據結構處理技巧

如何優化 PHP 中的 MySQL 查詢效能? 如何優化 PHP 中的 MySQL 查詢效能? Jun 03, 2024 pm 08:11 PM

如何優化 PHP 中的 MySQL 查詢效能?

如何在 PHP 中使用 MySQL 備份和還原? 如何在 PHP 中使用 MySQL 備份和還原? Jun 03, 2024 pm 12:19 PM

如何在 PHP 中使用 MySQL 備份和還原?

Java 枚舉類型在資料庫中的應用場景有哪些? Java 枚舉類型在資料庫中的應用場景有哪些? May 05, 2024 am 09:06 AM

Java 枚舉類型在資料庫中的應用場景有哪些?

如何使用 PHP 插入資料到 MySQL 表? 如何使用 PHP 插入資料到 MySQL 表? Jun 02, 2024 pm 02:26 PM

如何使用 PHP 插入資料到 MySQL 表?

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 Dec 09, 2024 am 11:42 AM

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤

如何在 PHP 中使用 MySQL 預存程序? 如何在 PHP 中使用 MySQL 預存程序? Jun 02, 2024 pm 02:13 PM

如何在 PHP 中使用 MySQL 預存程序?

PHP數組分頁的效能最佳化策略 PHP數組分頁的效能最佳化策略 May 02, 2024 am 09:27 AM

PHP數組分頁的效能最佳化策略

See all articles