Home  >  Article  >  Database  >  mysql模糊查询like和regexp小结

mysql模糊查询like和regexp小结

WBOY
WBOYOriginal
2016-06-07 16:28:251698browse

在mysql中实现模糊查询的有like和regexp。 ------------------------ like的用法许多人都是知道的,最为常用的情况就是select * from a where name like '%a%'; 其中'%'代表的是任意个字符,它的效果像是正则表达式里的'*',它有几种用法:'a%','%a%','%a',

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn