正則化表示式:用來匹配文字的特殊的串(字元集合)。正則化表示式用正規表示式語言來建立
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匹配 為搜尋...