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...