當(dāng)前位置:博客首頁(yè)>>PHP >> 閱讀正文

mysql中實(shí)現(xiàn)正則模糊查詢功能

作者: 鄭曉 分類: PHP 發(fā)布于: 2012-10-09 03:22 瀏覽:8,147 評(píng)論(3)


這是從今天Q群里一個(gè)人問的一個(gè)問題中,偶然學(xué)到的一個(gè)知識(shí),原來(lái)在mysql中也可以使用正則進(jìn)行匹配搜索。

他的原題是這樣的:說是做了一個(gè)輸入框,需要根據(jù)輸入框中輸入的內(nèi)容來(lái)查詢數(shù)據(jù)庫(kù)?,F(xiàn)在有個(gè)問題,就是想用占位符來(lái)實(shí)現(xiàn)模糊查詢,比如輸入2*3,需要查詢類似1223、223、2243,但不包括123這樣的結(jié)果,也就是*代表一個(gè)通配占位符,這個(gè)位置必須有且只有一個(gè)字符,那這個(gè)查詢要怎么寫?

之前只會(huì)用mysql的like和%來(lái)實(shí)現(xiàn)一些簡(jiǎn)單的模糊查詢,所以看到這個(gè)問題時(shí)首先想到的是如何通過php來(lái)實(shí)現(xiàn)這個(gè)功能。不過像這樣的搜索只用php來(lái)實(shí)現(xiàn)的話可能會(huì)有一些麻煩,由于問題想實(shí)現(xiàn)的功能是實(shí)現(xiàn)匹配搜索、匹配查詢,應(yīng)該想到正則!

百度了下,mysql果然有著強(qiáng)大的正則匹配功能,用一個(gè)關(guān)鍵詞REGEXP 來(lái)代替之前的LIKE,用一條的語(yǔ)句簡(jiǎn)單的實(shí)現(xiàn)了上面的功能:

SELECT * FROM `tb_name` where number REGEXP ‘2.3’;

 

 

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/mysql-achieve-positive-fuzzy-query.html

mysql中實(shí)現(xiàn)正則模糊查詢功能:目前有3 條留言

用戶評(píng)論頭像 月小升的技術(shù)博客發(fā)表于 2012年10月23日 15:50[回復(fù)]

一般不用mysql的正則,效率太低。

    用戶評(píng)論頭像 鄭曉發(fā)表于 2012年10月23日 15:53[回復(fù)]

    嗯。畢竟它不是專業(yè)干這個(gè)的,哈哈

用戶評(píng)論頭像 哼哼豬發(fā)表于 2012年10月09日 20:01[回復(fù)]

一般不使用sql命令

發(fā)表評(píng)論

change vcode