MySQL模糊查詢 LIKE模式和REGEXP模式

2021-07-07 07:03:33 字數 2498 閱讀 5730

**:

mysql模糊查詢提供了兩種模式:like模式和regexp模式。

like模式是使用的like 或 not like 比較運算子進行模糊查詢。

select 字段 from 表 where 字段 like

[not like

] '條件'

針對條件,有以下幾種萬用字元:

萬用字元含義

%表示任意乙個或多個字元,可匹配任意型別和長度的字元

_表示任意單個字元,匹配單個任意字元

escape

關鍵字定義轉義符。在模式中,當轉義符置於萬用字元之前時,該萬用字元就解釋為普通字元。

示例:

# 從 "persons" 表中選取居住在以 "ne" 開始的城市裡的人

select

*from persons where city like

'ne%

'# 從 "persons" 表中選取居住在包含 "lond" 的城市裡的人

select

*from persons where city like

'%lond%

'# 從 "persons" 表中選取名字的第乙個字元之後是 "eorge" 的人

select

*from persons where firstname like

'_eorge

'# 從 "persons" 表中選取的這條記錄的姓氏以 "c" 開頭,然後是乙個任意字元,然後是 "r",然後是任意字元,然後是 "er"

select

*from persons where lastname like

'c_r_er

'# 從 "kpi" 表中查詢計算過程中含有0

%的指標

select

*from kpi where count_process like

'%0/%%

'escape'/

'

注意:

萬用字元必須與 like 運算子一起使用

如果沒有使用萬用字元,like與=是等價的

regexp模式是使用 regexp 操作符來進行正規表示式匹配查詢。

select 字段 from 表 where 字段 regexp '

條件'

針對條件,有以下幾種萬用字元:

萬用字元含義

^匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。

$匹配輸入字串的結束位置。如果設定了regexp 物件的 multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。

.匹配除 "\n" 之外的任何單個字元。要匹配包括 '\n' 在內的任何字元,請使用象 '[.\n]' 的模式。

[...]

字元集合。匹配所包含的任意乙個字元。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

[^...]

負值字元集合。匹配未包含的任意字元。例如, '[^abc]' 可以匹配 "plain" 中的'p'。

p1|p2|p3

匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。

*匹配前面的子表示式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於。

+匹配前面的子表示式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 。

n 是乙個非負整數。匹配確定的 n 次。例如,'o' 不能匹配 "bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。

示例:

# 查詢name欄位中以'st'

為開頭的所有資料:

select name from person_tbl where name regexp '

^st'

;# 查詢name欄位中以'ok

'為結尾的所有資料:

select name from person_tbl where name regexp '

ok$'

;# 查詢name欄位中包含

'mar

'字串的所有資料:

select name from person_tbl where name regexp '

mar'

;# 查詢name欄位中以母音字元開頭且以'ok

'字串結尾的所有資料:

select name from person_tbl where name regexp '

^[aeiou]|ok$

';

mysql模糊查詢like優化

使用 like value 不走索引 select column from table where field like keyword 1.可使用 like value 前值匹配,可走索引 select column from table where field like keyword 2.使用...

mysql插入,like模糊查詢

1.insert into 最常用簡單的插入語句,可以有以下兩種用法 insert into tb user id,name,age values 100022 tom 25 只給指定的列賦值 insert into tb user values 100022 tom 25 必須 給所有列賦值 注 ...

like 模糊查詢

sql 模糊查詢 逗號,在sql中like中不需要轉義,但是如果 在sql中的某個欄位值用 分隔資料,需要獲取資料的時候直接把 拆分成資料,獲得乙個資料的list。例如 需要查詢某欄位是否包含乙個值,111是否存在於1111,2111,1112,1121,1113這個欄位中 因為根據 逗號分開,要求...