在mysql中實(shí)現(xiàn)模糊查詢(xún)的有l(wèi)ike和regexp。
------------------------
like的用法許多人都是知道的,最為常用的情況就是select * from a where name like '%a%';
其中'%'代表的是任意個(gè)字符,它的效果像是正則表達(dá)式里的'*',它有幾種用法:'a%','%a%','%a',分別表示以什么開(kāi)頭,存在什么以及以什么結(jié)尾。
另外也可以使用'_'字符,這表示一個(gè)任意字符。效果類(lèi)似正則表達(dá)式里面的'.'。
like是對(duì)這個(gè)字段里面的所有字符串進(jìn)行比較,效率并不高。
------------------------
regexp就是mysql的正則匹配操作符.
regexp的用法如:select * from a where name regexp 'a';其寫(xiě)法可以參照正則表達(dá)式.像是'*','[a-z]','a|b','cc$','^b{2}$'。
------------------------
在hibernate中沒(méi)有提供regexp的直接使用功能,但是可以通過(guò)添加自定義函數(shù)的方式實(shí)現(xiàn)。
?123456 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語(yǔ)句可以寫(xiě)作:
from A where regexp(a,'a|b|c')=1;
更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄
2025國(guó)考·省考課程試聽(tīng)報(bào)名