第9章 用正則化表示式進行搜尋

2021-10-09 10:53:05 字數 2023 閱讀 2362

正則化表示式:用來匹配文字的特殊的串(字元集合)。正則化表示式用正規表示式語言來建立

mysql和正規表示式的關係

mysql使用where子句對正規表示式提供了初步的支援,允許你指定正規表示式,過濾select檢索出的資料

1.基本字元匹配

select prod_name

from products

where prod_name regexp

'1000'

order

by prod_name;

select prod_name

from products

where prod_name regexp

'.000'

order

by prod_nam;

. 是正則化表示式語言中乙個特殊的字元,表示匹配任意乙個字元

like和regexp的區別:

mysql正則化表示式匹配不區分大小寫,如果要區分大小寫,在regexp後面使用關鍵字binary

2.進行or匹配

select prod_name

from products

where prod_name regexp

'1000|2000'

order

by prod_name;

|從功能上類似於在select語句中使用or語句

'1000|2000|3000』將匹配1000或2000或3000

3.匹配幾個字元之一

使用匹配特定的字元

select prod_name

from products

where prod_name regexp

'[123] ton'

order

by prod_name;

結果1 ton anvil

2 ton anvil

是另一種形式的or語句

[^123]匹配除這些字元之外的任何東西

4.匹配範圍

集合可以定義要匹配的乙個或者多個字元

select prod_name

from products

where prod_name regexp

'[1-5] ton'

order

by prod_name;

#不限於數值型的範圍

select prod_name

from products

where prod_name regexp

'[a-z] ton'

order

by prod_name;

5.匹配特殊的字元

為了匹配特殊的字元,必須使用\作為前導**義)

例如:\-表示查詢-

\.表示查詢.

\也可以用來引用元字元

\f 換頁

\n 換行

\r 回車

\t 製表

\v 縱向製表

匹配\ 使用\\

6.定位符

匹配指定位置的文字資訊

定位元字元

^文字的開始

$ 文字的結尾

[[:<:]] 詞的開始

[[:>:]]詞的結尾

例子:如果想查詢乙個數(包括一小數點開始的數)開始的資訊,怎麼辦?簡單搜尋[0-9\.]或者[[:digit:]\.]是不行的,因為它將在文字內任意位置進行查詢匹配

解決辦法使用定位符^

select prod_name

from products

where prod_name regexp

'^[0-9\\.] ton'

order

by prod_name;

表示匹配串的開始,[0-9\.]只在.或者任意數字為串中第乙個字元時才匹配他們

^的兩種用途

1.在集合**現,表示否定該集合

2.在其它地方出現,表示用來指定串的開始處

MYSQL 9 用正規表示式進行搜尋

1 列值中包含1000即可 select prod name from products where prod name regexp 1000 order by prod name 2 like匹配整個列,以下為列值全名是1000才可以。select prod name from products...

SQL正規表示式進行搜尋

基本字元匹配 select prod name from products where prod name regexp 000 order by prod name 分析 這裡使用了正規表示式 000,是正規表示式語言中乙個特殊的字元。它表示匹配任意乙個字元,因此,1000和2000都匹配且返回。...

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

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