mysql隱約查詢like和regexp小結。本站提示廣大學習愛好者:(mysql隱約查詢like和regexp小結)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql隱約查詢like和regexp小結正文
在mysql中完成隱約查詢的有like和regexp。
------------------------
like的用法很多人都是曉得的,最為經常使用的情形就是select * from a where name like '%a%';
個中'%'代表的是隨意率性個字符,它的後果像是正則表達式裡的'*',它有幾種用法:'a%','%a%','%a',分離表現以甚麼開首,存在甚麼和以甚麼開頭。
別的也能夠應用'_'字符,這表現一個隨意率性字符。後果相似正則表達式外面的'.'。
like是對這個字段外面的一切字符串停止比擬,效力其實不高。
------------------------
regexp就是mysql的正則婚配操作符.
regexp的用法如:select * from a where name regexp 'a';其寫法可以參照正則表達式.像是'*','[a-z]','a|b','cc$','^b{2}$'。
------------------------
在hibernate中沒有供給regexp的直接應用功效,然則可以經由過程添加自界說函數的方法完成。
public class MySQL5DialectRegexp extends org.hibernate.dialect.MySQLInnoDBDialect{ public MySQL5DialectRegexp() { super(); registerFunction( "regexp", new SQLFunctionTemplate(Hibernate.BOOLEAN, "?1 REGEXP ?2") ); } }
個中org.hibernate.dialect.MySQLInnoDBDialect是hibernate設置裝備擺設信息hibernate.dialect的值,以後可使用MySQL5DialectRegexp的途徑取代.
HQL語句可以寫作:
from A where regexp(a,'a|b|c')=1;