資料庫學習 使用正規表示式搜尋

2021-06-23 06:18:35 字數 4835 閱讀 9059

一、正規表示式介紹

正規表示式是用來匹配文字的特殊的串(字元集合)。

二、使用mysql正規表示式

1、mysql僅僅支援多數正規表示式實現的乙個很小的子集。

2、like匹配整個列值;而regexp匹配列值的子串,如果被匹配的文字在列值中出現,regexp將會找到它,相應的行將被返回。看下面的例子:

[sql]view plain

copy

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]view plain

copy

mysql>select username from v9_admin  

-> where username regexp binary

'spacce';  

emptyset (0.04 sec)  

4、進行or匹配:為搜尋兩個串之一,使用|,如下所示:

[sql]view plain

copy

mysql>select roleid from v9_admin_role  

-> where roleid regexp '1|3';  

+--------+

|roleid |  

+--------+

|      1 |  

|      3 |  

+--------+

2 rowsin set (0.00 sec)  

5、匹配幾個字元之一:匹配任何單一字元。如下所示:

[sql]view plain

copy

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]view plain

copy

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]view plain

copy

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)。

9、使用正規表示式重複元字元匹配多個例項:

10、定位符(為了匹配特定位置的文字):

11、使regexp起類似like的作用,它們的區別在於like匹配整個串而regexp匹配子串。利用定位符,通過用^開始每個表示式,用$結束每個表示式。

12、簡單的正規表示式測試:可以在不使用資料庫表的情況下用select來測試正規表示式。regexp檢查總是返回0或1(匹配)。

[sql]view plain

copy

mysql> select

'hello' regexp'[0-9]';  

+------------------------+

| 'hello' regexp '[0-9]' |  

+------------------------+

|                      0 |  

+------------------------+

1 row in

set (0.00 sec) 

資料庫 用正規表示式進行搜尋

一 基本字元匹配 regexp後跟的東西作為正規表示式 例 select prod name from products where prod name regexp 1000 order by prod name 1 是正規表示式語言中乙個特殊的字元,它表示匹配任意乙個字 2 進行or匹配 為搜尋...

mysql 使用正規表示式搜尋

mysql僅僅支援正規表示式的乙個很小的子集 檢索prob name包含文字四位數字且數字末尾是 000 的所有行 select prob name from products where prob name regexp 000 order by prob name 這個例子可以用like來完成,...

資料庫查詢操作(使用正規表示式)

1.正規表示式通常用來檢索或者是替換那些符合某個模式的文字的內容,根據指定的匹配模式匹配文字中符合要求的特殊字串。2.使用正規表示式進行基本的查詢 1 查詢一特定的字元或者是字串開頭的記錄 語法 字元 匹配以特定的字元或者是字串開頭的文字 select from test where name re...