`
yo8237233
  • 浏览: 62583 次
  • 来自: 深圳
社区版块
存档分类
最新评论

Mysql hql字符串字段中是否包含某个字符串,用 find_in_set

 
阅读更多
有这样一个需求,在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数字结尾字符串分割排序说明

    本文档旨在详细介绍如何通过自定义函数在PostgreSQL数据库中实现一种特殊的排序方式:对于以数字结尾的字符串,首先将其分为两部分,一部分为非数字字符串,另一部分为数字;然后根据这两部分分别进行排序。具体而言...

    解决Hibernate中MySQL的中文排序

    GBK是简体中文的一个标准,包含了大部分中文字符,而UTF-8是一种多字节编码,支持全球多种语言,包括繁体中文。 当创建MySQL数据库和表时,需要指定字符集。例如,创建一个使用GBK字符集的数据库可以这样写: ```...

    HQL常用函数

    HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者用类和属性名称来查询数据库,而不需要直接编写SQL语句。这大大简化了数据库操作的过程,并使得代码更加清晰易读。在本文中,我们将详细介绍...

    hql的增删改查

    - 构造HQL字符串,其中包含计数表达式和条件语句。 - 使用`setParameter()`方法设置参数。 - `uniqueResult()`方法执行查询并返回单个结果。 - 转换结果类型为`Integer`并返回。 #### 八、小结 通过上述示例,我们...

    Hibernate框架]Hql语句in中带参数的写法

    Hibernate框架Hql语句in中带参数的写法 Hibernate框架中,在使用HQL语句时,需要传递参数,而在HQL语句中使用in关键字时,需要特别注意参数的传递方式。在本文中,我们将讨论如何在HQL语句中使用in关键字带参数的...

    Spring中hql语句的常用方法

    2. **findByNamedParam(String queryString, String[] paramName, Object[] value)**:此方法接受一个包含多个命名参数的HQL字符串及对应的参数名数组和值数组作为参数,返回符合条件的结果列表。 - 示例代码: ``...

    Hql语句注意事项总结

    一种方法是动态构建Hql语句,将数组元素拼接成一个逗号分隔的字符串,然后在`in`子句中使用这个字符串。例如,`id in ('1','2','3')`。另一种方法是使用Hibernate的参数绑定功能,直接将数组作为参数传递,Hibernate...

    hql模糊查询hql模糊查询

    在这个示例中,我们首先定义了一个HQL查询字符串,该字符串指定了查询的类(Subject)以及模糊匹配的字段(subname 和 subinfo)。接着,我们通过`session.createQuery()`方法创建了一个`Query`对象,并使用`...

    Spring--HQL-chaxun.zip_HQL

    HQL支持内置的数学、字符串和日期函数,也可以调用实体类中的方法。 通过学习“Spring中常用的HQL查询方法.doc”,开发者可以掌握如何在Spring项目中高效地使用HQL进行数据操作,提升开发效率,减少与数据库交互的...

    Hibernate-HQL.rar_HQL_hibernate hql

    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...

    hibernate hql where语句拼接工具类

    这些方法接受一个当前的HQL查询字符串和一个新的条件,然后根据查询的现有结构适当地添加WHERE或AND/OR关键字,并附加新的条件。这在处理动态查询条件,如根据用户输入过滤数据时非常有用。 使用此类时,你可以像...

    常用的HQL语句下载

    在本文中,我们将深入探讨HQL(Hibernate Query Language),一种专为Hibernate ORM框架设计的查询语言,用于在Java应用程序中操作数据库。以下是一些常用HQL语句的使用与说明: 1. **HQL更新语句**: 更新操作...

    Hibernate 课件_HQL

    ### Hibernate 课件_HQL 知识点解析 #### HQL查询 - **定义**: HQL(Hibernate Query Language)是一种面向对象的查询语言,它的语法类似于SQL,但不同于直接操作数据库表,HQL操作的是持久化的Java对象。这意味着...

    hibernate_hql.rar_HQL

    首先,HQL是Hibernate提供的一个强大的查询工具,它允许开发者用类名和属性名来代替表名和列名,从而避免了直接操作SQL语句的繁琐。HQL支持基本查询、聚合函数、分组、排序、子查询以及连接查询等多种操作,使得...

    hql语句 使用大全

    当需要同时查询多个字段时,可以在HQL语句中指定这些字段,并通过索引来访问这些字段值: ```java String hql = "select u.name, u.age from com.mypack.User4 u"; Query query = session.createQuery(hql); List ...

    hql基础语句

    HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它是SQL的面向对象版本,使得开发者可以更方便地在Java应用中进行数据库查询。本教程将深入讲解HQL的基础语句,包括ID...

Global site tag (gtag.js) - Google Analytics