NutzCN Logo
问答 关于函数索引与自动LOWER
发布于 1931天前 作者 qq_44788994 1804 次浏览 复制 上一个帖子 下一个帖子
标签:

在使用中发现在一个查询已字符串作为条件like时,例如

criteria.where().andLikeL("alias", queryObject.alias);

在执行时会默认变为 WHERE LOWER(alias) LIKE LOWER('abc%')
这个字段不是 @Name 的字段

请问如何去掉这个默认处理(这似乎导致了索引不生效)

另外请问如何建立聚合函数索引

8 回复

andLike/andLikeL 区分一下? L结尾才会加lower的

我尝试了一下 like 也会加上 LOWER

SELECT * FROM user  WHERE LOWER(alias) LIKE LOWER('%123%')
Criteria cri1 = Cnd.cri();
cri1.where().andLike("alias", "123");
List<User> list = dao.query(User.class, cri1);

这个是列定义,这列是有索引的(默认,非唯一)

@Column
@ColDefine(type = ColType.VARCHAR, width = 100)
private String alias;

啥数据库?

这样写吧

Criteria cri1 = Cnd.cri();
cri1.where().and(Exps.like("alias", "123", false));
List<User> list = dao.query(User.class, cri1);

好的,谢谢
现在是这么解决的

criteria.where().and(Exps.like("alias", queryObject.alias, false).left(null));
添加回复
请先登陆
回到顶部