MySql 使用正規表示式

2022-02-22 23:57:04 字數 1757 閱讀 6298

mysql 用where 子句對正規表示式提供了支援,允許你指定正規表示式,注意mysql僅支援多數正規表示式實現的乙個很小的子集。

select

prod_name

from

products

where prod_name regexp '

1000

';

mysql 中正規表示式匹配不區分大小寫,為區分大小寫,可使用binary 關鍵字,如:

where prod_name regexp binary 'jetpak .000'。

where prod_name regexp '1000

|2000';

| 為正規表示式的or操作符。它表示匹配基中之一。多個or條件可以併入單個正規表示式,例如:'1000|2000|3000' 將匹配1000或2000或3000.

where prod_name regexp '

[123] ton

'

[123] 定義一組字元,它的意思是匹配1或2或3。是另一種形式的or語句,事實上,正規表示式[123]ton 為[1|2|3]ton 的縮寫。

為否定乙個字符集,在集合的開始處放置乙個^即可,因此[^123]匹配除1,2,3字元之外的任何東西。

可使用 - 來定義乙個範圍,如[0-9] 表示匹配0到9之間的任乙個數字。範圍不限於完整的集合,[1-3]和[6-9]也是合法的範圍。此外,範圍不一定只是數值的,[a-z]匹配任意乙個字母字元。

where prod_name regexp '

[1-5] ton

'

為了匹配特殊字元,必須用\\為前導進行轉義,\\- 表示查詢-,\\. 表示查詢. 。

where vend_name regexp '

\\.'

為了匹配反斜槓(\)字元本身,需要使用\\\。

為了匹配特定位置的文字可以使用如下定位符:

元字元

說明

^文字的開始

$文字的結尾

例如,你想找出以乙個數(包括以小數點開始的數)開始的所有產品:

where prod_name regexp '

^[0-9\\.]

'

^有兩種用法:在集合中(用[和]定義),用它來否定該集合,否則用它來指定串的開始。

.匹配任意乙個字元

*匹配0個或多個字元

+匹配1個或多個字元(等於

?匹配0個或1個字元(等於

指定數目的匹配

不少於指定資料的匹配

匹配數目的範圍(m不超過255)

where prod_name regexp '

\\([0-9] sticks?\\)

'

\\( 匹配字元(,[0-9]匹配任意乙個數字,sticks? 匹配stick和sticks (s 後的?使s可選),\\) 匹配字元)。

可以在不使用資料庫表的情況下用select來測試正規表示式。regexp 在匹配成功時總是返回1,匹配不成功時返回0,可以用帶文字串的regexp來測試表示式,並試驗它們。相應的語法如下:

select

'hello

' regexp '

[0-9]

';

這個例子顯示將返回0(因為文字hello中沒有數字)。

mysql正規表示式 MySQL正規表示式

正規表示式是為複雜搜尋指定模式的強大方式。正規表示式描述了一組字串。最簡單的正規表示式是不含任何特殊字元的正規表示式。例如,正規表示式hello匹配hello。非平凡的正規表示式採用了特殊的特定結構,從而使得它們能夠與1個以上的字串匹配。例如,正規表示式hello word匹配字串hello或字串w...

mysql 正規表示式

已知mysql可以通過 like 來進行模糊匹配。mysql 同樣也支援其他正規表示式的匹配,mysql中使用 regexp 操作符來進行正規表示式匹配。例項 查詢name欄位中以 st 為開頭的所有資料 mysql select name from person tbl where name re...

MySQL正規表示式

在前面我們已經看到了mysql的模式匹配 like mysql支援另一種型別的模式匹配的操作基於正規表示式和正規表示式運算子。如果知道php或perl,那麼它是非常簡單的,因為這匹配非常相似於指令碼正規表示式。以下是模式的 其可以連同regexp運算子使用。模式什麼樣的模式匹配 開始的乙個字串 結束...