程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql模糊查詢like和regexp小結

mysql模糊查詢like和regexp小結

編輯:關於MYSQL數據庫

在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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved