有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被‘,’分开,现在要取出具有某权限的所有成员列表。
创建表:
1 CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),name VARCHAR(20) NOT NULL,limits VARCHAR(50) NOT NULL);
添加数据:
1 INSERT INTO users(name, limits) VALUES('小张','1,2,12');
2 INSERT INTO users(name, limits) VALUES('小王','11,22,32');
Mysql 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢?
方法一:
1 mysql> SELECT * FROM users WHERE limits like "%2%";
2 +----+----+--------+
3 | id |name| limits |
4 +----+----+--------+
5 | 1 |小张| 1,2,12 |
6 +----+----+--------+
7 | 2 |小王|11,22,32|
8 +----+----+--------+
9 2 row in set
这样第二条数据不具有权限‘2’的用户也查出来了,不符合预期。所以就查阅了手册,利用mysql 字符串函数 find_in_set()。
方法二:
1 mysql> SELECT * FROM users WHERE find_in_set('2', limits);
2 +----+----+--------+
3 | id |name| limits |
4 +----+----+--------+
5 | 1 |小张| 1,2,12 |
6 +----+----+--------+
7 1 row in set
这样就能达到我们预期的效果,问题就解决了!
注意:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。
在hql中是不能直接使用的,不过我们可以这样用:
from User u where find_in_set('2', limits)>0 ;
即‘>0’必须带上,否则会报错。
分享到:
相关推荐
本文档旨在详细介绍如何通过自定义函数在PostgreSQL数据库中实现一种特殊的排序方式:对于以数字结尾的字符串,首先将其分为两部分,一部分为非数字字符串,另一部分为数字;然后根据这两部分分别进行排序。具体而言...
GBK是简体中文的一个标准,包含了大部分中文字符,而UTF-8是一种多字节编码,支持全球多种语言,包括繁体中文。 当创建MySQL数据库和表时,需要指定字符集。例如,创建一个使用GBK字符集的数据库可以这样写: ```...
HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者用类和属性名称来查询数据库,而不需要直接编写SQL语句。这大大简化了数据库操作的过程,并使得代码更加清晰易读。在本文中,我们将详细介绍...
- 构造HQL字符串,其中包含计数表达式和条件语句。 - 使用`setParameter()`方法设置参数。 - `uniqueResult()`方法执行查询并返回单个结果。 - 转换结果类型为`Integer`并返回。 #### 八、小结 通过上述示例,我们...
Hibernate框架Hql语句in中带参数的写法 Hibernate框架中,在使用HQL语句时,需要传递参数,而在HQL语句中使用in关键字时,需要特别注意参数的传递方式。在本文中,我们将讨论如何在HQL语句中使用in关键字带参数的...
2. **findByNamedParam(String queryString, String[] paramName, Object[] value)**:此方法接受一个包含多个命名参数的HQL字符串及对应的参数名数组和值数组作为参数,返回符合条件的结果列表。 - 示例代码: ``...
一种方法是动态构建Hql语句,将数组元素拼接成一个逗号分隔的字符串,然后在`in`子句中使用这个字符串。例如,`id in ('1','2','3')`。另一种方法是使用Hibernate的参数绑定功能,直接将数组作为参数传递,Hibernate...
在这个示例中,我们首先定义了一个HQL查询字符串,该字符串指定了查询的类(Subject)以及模糊匹配的字段(subname 和 subinfo)。接着,我们通过`session.createQuery()`方法创建了一个`Query`对象,并使用`...
HQL支持内置的数学、字符串和日期函数,也可以调用实体类中的方法。 通过学习“Spring中常用的HQL查询方法.doc”,开发者可以掌握如何在Spring项目中高效地使用HQL进行数据操作,提升开发效率,减少与数据库交互的...
此方法允许通过HQL字符串来执行查询操作。它会根据提供的HQL语句返回所有符合条件的数据记录。 **示例代码**: ```java List<User> userList = this.getHibernateTemplate().find("from bean.User"); ``` 此方法将...
1. 关联查询:HQL允许直接在查询中包含关联对象,如“SELECT u FROM User u JOIN u.address a WHERE a.city='北京'”。 2. 子查询:可以在WHERE或HAVING子句中嵌套HQL查询,如“SELECT u FROM User u WHERE u.id IN...
这些方法接受一个当前的HQL查询字符串和一个新的条件,然后根据查询的现有结构适当地添加WHERE或AND/OR关键字,并附加新的条件。这在处理动态查询条件,如根据用户输入过滤数据时非常有用。 使用此类时,你可以像...
在本文中,我们将深入探讨HQL(Hibernate Query Language),一种专为Hibernate ORM框架设计的查询语言,用于在Java应用程序中操作数据库。以下是一些常用HQL语句的使用与说明: 1. **HQL更新语句**: 更新操作...
### Hibernate 课件_HQL 知识点解析 #### HQL查询 - **定义**: HQL(Hibernate Query Language)是一种面向对象的查询语言,它的语法类似于SQL,但不同于直接操作数据库表,HQL操作的是持久化的Java对象。这意味着...
首先,HQL是Hibernate提供的一个强大的查询工具,它允许开发者用类名和属性名来代替表名和列名,从而避免了直接操作SQL语句的繁琐。HQL支持基本查询、聚合函数、分组、排序、子查询以及连接查询等多种操作,使得...
- **面向对象**:HQL 使用类和属性名来引用数据库中的表和字段。 - **可移植性**:HQL 提供了良好的跨数据库平台的兼容性。 - **简洁性**:HQL 的语法比 SQL 更简洁,易于编写和理解。 - **灵活性**:支持复杂的查询...
当需要同时查询多个字段时,可以在HQL语句中指定这些字段,并通过索引来访问这些字段值: ```java String hql = "select u.name, u.age from com.mypack.User4 u"; Query query = session.createQuery(hql); List ...
HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它是SQL的面向对象版本,使得开发者可以更方便地在Java应用中进行数据库查询。本教程将深入讲解HQL的基础语句,包括ID...
- **In 与 Exists 的区别**: `In` 主要用于比较单个值是否存在于列表中, 而 `Exists` 更侧重于判断某个子查询是否有结果返回, 性能上 `Exists` 通常更优。 ### 三、HQL 更新与删除操作 **1. 更新操作** - **语法*...