MySql模糊識別 mysql 正則模糊搜尋

2021-10-20 23:22:21 字數 1524 閱讀 6705

mysql  查詢時 模糊搜尋

例如:username 『dg組合名字』

現在使用者輸入了『組字』或者『d字』---也想搜尋出結果--

select *

from `xx_admin`

where username regexp '[d|組|字]'

limit 0 , 30

上一條語句 匹配的是 username欄位 同時包含『d組字』中的三個字,

如果如果你想匹配的是 username欄位只包含『d組字』中的隨便一

個字的,則是 select *

from `xx_admin`

where username regexp '[d|組|字]'

limit 0 , 30

功能是解決了,其實最簡單的直接用like 也可以,正好一哥們說寫個mysql 正則匹配模糊搜尋給他,就試了下,,,

注意下問題,,,

細節----

仔細來看這條語句

先看場景吧

資料庫資訊如下

現在想實現的是 我搜尋『專案屬』可以收到兩條結果,

可選擇的sql語句

首先看第一種選擇

select *

from `xx_admin`

where username like '%專案屬%'

limit 0 , 30

解決是select *

from `xx_admin`

where username like '%目%'

and username like '%屬%'

and username like '%項%'

再來看mysql 正則的模糊搜尋

select *

from `xx_admin`

where username regexp '[項|目|屬]'

limit 0 , 30

或者select *

from `xx_admin`

where username regexp '[專案屬]'

limit 0 , 30

這個看上去確實是不帶順序的(正則裡表示的是其中任意乙個或者多個),也是去取了三個,

但是其實他也是有問題的,因為username regexp '[專案屬]'   這條語句,是可以匹配『專案屬』,和『屬專案』這些的,,就說順序換了沒問題,但是同時他還可以匹配『項項項』,『目目目』,『屬屬屬』,『項專案』,等等這些,因為[專案屬]指的是其中任意乙個,並沒有排他性,

另外mysql的like用正則來寫

select *

from  `xx_admin`

where username regexp  '.*((專案屬性)).*'

limit 0 , 30

MySql模糊識別 mysql中的模糊查詢

例項 1 like mc 將搜尋以字母 mc 開頭的所有字串 如 mcbadden 2 like inger 將搜尋以字母 inger 結尾的所有字串 如 ringer stringer 3 like en 將搜尋在任何位置包含字母 en 的所有字串 如 bennet green mcbadden ...

mysql模糊查詢 MYSQL模糊查詢

mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式。一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...

mysql模糊查詢索引 MySQL模糊查詢全文索引

全文索引 mysql front dump 2.5 host localhost database test server version 4.0.12 nt log table structure for table t3 create table t3 name char 12 not null...