mysql中實(shí)現(xiàn)正則模糊查詢功能
作者: 鄭曉 分類: PHP 發(fā)布于: 2012-10-09 03:22 瀏覽:8,312 評(píng)論(3)
這是從今天Q群里一個(gè)人問(wèn)的一個(gè)問(wèn)題中,偶然學(xué)到的一個(gè)知識(shí),原來(lái)在mysql中也可以使用正則進(jìn)行匹配搜索。
他的原題是這樣的:說(shuō)是做了一個(gè)輸入框,需要根據(jù)輸入框中輸入的內(nèi)容來(lái)查詢數(shù)據(jù)庫(kù)?,F(xiàn)在有個(gè)問(wèn)題,就是想用占位符來(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è)問(wèn)題時(shí)首先想到的是如何通過(guò)php來(lái)實(shí)現(xiàn)這個(gè)功能。不過(guò)像這樣的搜索只用php來(lái)實(shí)現(xiàn)的話可能會(huì)有一些麻煩,由于問(wèn)題想實(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://yjfs.org.cn/mysql-achieve-positive-fuzzy-query.html
一般不用mysql的正則,效率太低。
嗯。畢竟它不是專業(yè)干這個(gè)的,哈哈