MySQL sql模糊查詢正規表示式

2021-10-10 13:22:11 字數 4054 閱讀 6815

mysql使用regexp函式,如

select * from course c where c.t_id regexp  '^\[0-2]+$'
1. 正規表示式元字元說明

元字元含義

^匹配輸入字串的開始位置。

$匹配輸入字串的結尾位置。

*匹配前面的字元零次或多次。

+匹配前面的字元一次或多次。

?匹配前面的字元零次或一次。

.匹配任何字元,除了空.

|指明兩項之間的乙個選擇。例子'^([a-z]+|[0-9]+)$'表示所有小寫字母或數字組合成的字串。

[ ]用於指定要在其中嘗試匹配列表中任何乙個字元的匹配列表。

[^ ]

用於指定乙個不匹配列表,要嘗試匹配除列表中的字元之外的任何字元。

[…]接受括號中的任一字元

[^…]

不接受括號中的任一字元

( )標記乙個子表示式的開始和結束位置(字元組)。

正好匹配   m 次

至少匹配   m 次

乙個精確地出現次數範圍,m=《出現次數<=n,''表示出現m次,''表示至少出現m次。

[..]

匹配乙個可以是多個字元的排序規則元素。

[::]

匹配字元類。

[==]

匹配等價類。

\nn是1和9之間的數字。匹配在遇到\n之前在()中找到的第n個子表示式。

\d匹配乙個數字字元.

\d匹配乙個非數字字元.

\w匹配包括下劃線的任何單詞字元.

\w匹配任何非單詞字元.

\s任一空白字元,包括製表符,換行符,回車符,換頁符和垂直製表符

\s匹配任何非空白字元.

\a前面的模式必須位於字串的開始位置,忽略多行標誌

\z前面的模式必須位於字串的未端,或者位於乙個換行符前

*?與前前面的模式匹配零個或多個匹配項。

+?匹配前面乙個模式一次或多次。

??匹配前面乙個模式零或乙個發生。

?匹配前面的模式n次。

?與前乙個模式匹配至少n次

?與前乙個模式匹配至少n次,但不超過m次。

2. oracle正規表示式的4個函式

(1) regexp_like

1) 語法

regexp_like ( expression, pattern [, match_parameter ] )

2) 引數說明

expression:字元表示式

pattern:正規表示式

match_parameter:可選的。它允許修改regexp_like條件的匹配行為。它可以是以下的組合:值描述

'c'執行區分大小寫匹配。

'i'執行不區分大小寫的匹配。

'n'允許句點字元(.)與換行符匹配。 預設情況下,句點是萬用字元。

'm'表示式假定有多個行,其中^是行的開始,$是行的結尾,不管表示式中這些字元的位置如何。預設情況下,表示式假定為單行。

'x'忽略空格字元。預設情況下,空格字元與任何其他字元一樣匹配。

3) 示例

--與like的功能類似

select * from fzq where regexp_like(value,'1....60');

(2) regexp_substr

1) 語法

regexp_substr(source_string,pattern[,position[,occurrence[,match_parameter]]])

2) 引數說明

source_string:源串,可以是常量,也可以是某個值型別為串的列。

pattern:正規表示式

position:從源串開始搜尋的位置。預設為1。

occurrence:指定源串中的第幾次出現。預設值1.

match_parameter:省略該引數時:預設區分大小寫、句點不匹配換行符、源串被看作一行。值說明

i'    

用於不區分大小寫的匹配。

c'用於區分大小寫的匹配。

n'允許將句點「.」作為萬用字元來匹配換行符。如果省略改引數,句點將不匹配換行符。

m' 將源串視為多行。即將「^」和「$」分別看做源串中任意位置任意行的開始和結束,而不是看作整個源串的開始或結束。

3) 示例

select regexp_substr ('hello my phone is 520 ', '[0-9]+') from dual; --520

(3) regexp_instr

1) 語法

regexp_instr(source_string,pattern[,position[,occurrence[,return_option[,match_parameter]]]])

2) 引數說明

source_string:源串,可以是常量,也可以是某個值型別為串的列。

pattern:正規表示式

position:可選。搜尋在字串中的開始位置。如果省略,則預設為1,這是字串中的第乙個位置。

occurrence:可選。它是模式字串中的第n個匹配位置。如果省略,預設為1。

return_option:可選 指定oracle返回的位置。如果指定0,那麼oracle將返回出現的第乙個字元的位置。這是預設的。如果指定1,則oracle返回字元之後發生的位置。

match_parameter:可選。它允許你修改regexp_instr功能匹配的行為。它可以是以下的組合:值描述

'c'執行區分大小寫匹配。

'i'執行不區分大小寫的匹配。

'n'允許句點字元(.)與換行符匹配。 預設情況下,句點是萬用字元。

'm'表示式假定有多個行,其中^是行的開始,$是行的結尾,不管表示式中這些字元的位置如何。預設情況下,表示式假定為單行。

'x'忽略空格字元。預設情況下,空格字元與任何其他字元一樣匹配。

3) 示例

select regexp_instr ('itmyhome', 'a|i|o|e|u')

from dual;

– result: 6

(4) regexp_replace

1) 語法

regexp_replace(source_string,pattern[,replace_string[,position[,occurrence[,match_parameter]]]])

2) 引數說明

source_string:源串,可以是常量,也可以是某個值型別為串的列。

pattern:正規表示式

replace_string:可選。匹配的模式將被替換replace_string字串。如果省略replace_string引數,將刪除所有匹配的模式,並返回結果字串。

position:可選。在字串中的開始位置搜尋。如果省略,則預設為1。

occurrence:可選。是乙個非負整數預設為1,指示替換操作的發生:如果指定0,那麼所有出現將被替換字串。如果指定了正整數n,那麼將替換第n次出現。

match_parameter:可選。它允許你修改regexp_replace功能匹配的行為。它可以是以下的組合:值描述

'c'執行區分大小寫匹配。

'i'執行不區分大小寫的匹配。

'n'允許句點字元(.)與換行符匹配。 預設情況下,句點是萬用字元。

'm'表示式假定有多個行,其中^是行的開始,$是行的結尾,不管表示式中這些字元的位置如何。預設情況下,表示式假定為單行。

'x'忽略空格字元。預設情況下,空格字元與任何其他字元一樣匹配。

3) 示例

select regexp_replace ('itmyhome is my network id', '^(\s*)', 'luck')

from dual;

Mysql sql模糊查詢,sql優化日常

mysql 1 模糊查詢 2 聯表查詢優化 1 模糊查詢 like select from ms fans where nick name like demo limit 0,100 like xx 不能使用索引 like xx 可使用字段索引,查詢效率快 locate同樣不能使用索引,40萬資料中...

mysql正則查詢 模糊查詢

正則查詢 sql預設是忽略大小寫的 正則模式使用regexp和not regexp操作符 或rlike和not rlike,它們是同義詞 正則即字段值包含正則的內容即可 匹配任何單個的字元,表示任意單字元 匹配包含方括號內某單個字元的字串,0 9 匹配0到9之間的某個數字 匹配零個或多個在它前面的字...

orm單錶查詢和模糊查詢

1.返回queryset物件的查詢 all 以列表形式返回全部queryset物件 filter kwargs 篩選 exclude kwargs 排除 reverse 反轉 order by field 排序 distinct 去重 2.特殊的queryset物件 values field 返回乙...