返回顶部
首页 > 资讯 > 数据库 >SQL查询之字段是逗号分隔开的数组如何查询匹配数据问题
  • 131
分享到

SQL查询之字段是逗号分隔开的数组如何查询匹配数据问题

SQL查询查询匹配数据SQL逗号分隔开数组 2023-03-06 10:03:15 131人浏览 泡泡鱼
摘要

目录字段是逗号分隔开的数组如何查询匹配数据方式一:CHARINDEX***()*****方式二:WHERE LIKEMysql逗号分隔的字段查询1.like2.find_in_set3.regexp总结字段是逗号

字段是逗号分隔开的数组如何查询匹配数据

方式一:CHARINDEX***()*****

SELECT
 *
FROM
 U_PUR1
WHERE
 CHARINDEX( ',' + '100306' + ',', ',' + DeptCode + ',' ) >0

匹配字符串开始位置的函数 CHARINDEX(str1,str,[start])

CHARINDEX(str1,str,[start]) 函数返回子字符串 str1 在字符串 str 中的开始位置,start 为搜索的开始位置,如果指定 start 参数,则从指定位置开始搜索;如果不指定 start 参数或者指定为0或者负值,则从字符串开始位置搜索。

方式二:WHERE LIKE

SELECT
 *
FROM
 U_PUR1
WHERE
 ',' + DeptCode + ',' LIKE '%,' + '100306' + ',%';

Where Like 的方式显然更好理解一些,首先在字段收尾加上逗号,这样可以使得字段中每一个值都拥有完整的格式,再使用Like进行模糊匹配时,可以使首尾的值都能匹配到。

mysql逗号分隔的字段查询

在工作中,经常会遇到一对多的关系,比如用户和爱好。想要在mysql中保存这种关系,一般有两种方式,一种是建立一张用户爱好表user_hobby(user_id, hobby_id),这样一条user_id就会存在多条记录。

或者采用第二种方式,直接在用户表中增加hobby_ids字段,将hobby_id拼接成用逗号分隔的字符串保存起来。

那么问题来了,如果采用第二种方式的话,查询的时候要如何处理呢?下面介绍几种常见的处理方式。

1.like

可能最新想到的是采用like的形式,如下:

select * from user where hobby_ids like '%1%';

这种方式是否可行呢? 行,但是有适用范围,如果hobby_id在10以内,那么这么处理完全是可以的,但是一旦超过了10,那'%1%'就会把10,11,这些带1的id全都匹配处理。

2.find_in_set

为了解决like存在的问题,还可以使用mysql提供的find_in_set(str, strlist),sql可以这样写:

select * from user where find_in_set('1', hobby_ids);

这样mysql就会把hobby_ids的值,按照逗号分隔的一个个元素去匹配。如果我们要匹配多个值要怎么办呢,比如查找喜欢1-篮球或2-足球的用户,可以

select * from user where find_in_set('1', hobby_ids) or find_in_set('2', hobby_ids);

如果匹配的值较多,我们可能要拼很长的sql,那有没有稍微简短的方式呢,我们可以采用下面的方式。

3.regexp

regexp是mysql提供的强大的正则匹配方式。上面的sql就可以改写成:

select * from user where hobby_ids regexp '(^|,)(1|2)(,|$)';

这里是完全采用字符串正则匹配的方式,(1|2)表示匹配1或者2,(^|,)表示数字前面必须是字符串开头或者是一个逗号,(,|$)表示数字后面必须是逗号或者字符串的结尾。这样就可以完整匹配逗号分隔的元素了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文档:

--结束END--

本文标题: SQL查询之字段是逗号分隔开的数组如何查询匹配数据问题

本文链接: https://lsjlt.com/news/198581.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL查询之字段是逗号分隔开的数组如何查询匹配数据问题
    目录字段是逗号分隔开的数组如何查询匹配数据方式一:CHARINDEX***()*****方式二:WHERE LIKEmysql逗号分隔的字段查询1.like2.find_in_set3.regexp总结字段是逗号...
    99+
    2023-03-06
    SQL查询 查询匹配数据 SQL逗号分隔开数组
  • SQL查询之字段是逗号分隔开的数组怎么查询匹配数据
    这篇文章主要介绍“SQL查询之字段是逗号分隔开的数组怎么查询匹配数据”,在日常操作中,相信很多人在SQL查询之字段是逗号分隔开的数组怎么查询匹配数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2023-03-09
    sql
  • MySQL查询指定字段不是数字与逗号的sql
    核心sql语句 MySQL查询不包含数字的语句: SELECT * FROM test WHERE `name` regexp '[^0-9]'; MySQL查询纯数字的语句: SEL...
    99+
    2024-04-02
  • Oracle字段根据逗号分割查询数据的方法
    需求是表里的某个字段存储的值是以逗号分隔开来的,要求根据分隔的每一个值都能查出来数据,但是不能使用like查询。 数据是这样的: 查询的sql如下: select * from ( sel...
    99+
    2024-04-02
  • sql如何查询字段重复数据
    可以使用 sql 的 group by 和 count() 函数、distinct 和 count() 函数或窗口函数 row_number() 来查询重复字段数据。 SQL 查询重复...
    99+
    2024-06-06
  • Mysql 逗号‘,’拼接的字符串怎么查询包含的匹配数据?
    上数据 :  可以看到sn 存储的方式的逗号拼接的方式。 那么怎么去做sn这个字段的匹配查找呢? ① like   (不考虑) 首先 like 是不行的, 除非你能保证 你的 逗号拼接这里面的数据不包含 重复的值, 比如  1 和 ...
    99+
    2023-08-31
    mysql 数据库 逗号拼接 匹配 查找
  • mysql对以逗号分隔的字段内容进行查询——find_in_set函数或locate函数
    mysql对以逗号分隔的字段内容进行查询 find_in_set函数 背景 使用mysql时,有可能一个字段代表一个集合,如果将这个集合单独抽成一张表又不值当的,这个时候我们存储时,可以选择用逗号将数据分隔开(只能用英文的逗号),如图所示:...
    99+
    2023-08-19
    mysql mybatis 数据库
  • sql如何查询两个时间段之间的数据
    SQL查询两个时间段之间的数据可以使用`BETWEEN`关键字。以下是一个示例查询语句:```sqlSELECT * FRO...
    99+
    2023-09-13
    sql
  • mysql如何查询所有字段的数据
    这篇文章主要介绍了mysql如何查询所有字段的数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 在mysql中...
    99+
    2024-04-02
  • SQL 如何查询每个分组都出现的字段值
    数据分组以后,要找出在每个分组中都出现的某个字段值。 用SQL来解决这个问题并不容易! SQL缺少单纯的分组操作,只能返回各分组的统计值,而不能对各组的成员再进行更细的交、差、并等集合运算。要解决这种问题就需要多层嵌套子查询来变相地实现...
    99+
    2016-08-07
    SQL 如何查询每个分组都出现的字段值
  • SQL如何按照年月来查询数据问题
    目录SQL如何按照年月来查询数据问题:如何按年月查询了SQL根据年月分组查询总结SQL如何按照年月来查询数据 我的MySQL数据库中有张名为"WORK"的表,其中...
    99+
    2023-02-22
    SQL查询数据 SQL按年月查询 SQL按年月查询数据
  • php如何查询某字段下的所有数据
    这篇文章主要介绍“php如何查询某字段下的所有数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何查询某字段下的所有数据”文章能帮助大家解决问题。一、连接数据库在查询数据库之前,我们需要先连...
    99+
    2023-07-05
  • laravel如何排除特定字段的查询数据
    这篇“laravel如何排除特定字段的查询数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“laravel如何排除特定字段的...
    99+
    2023-07-05
  • SSM Mapper文件查询出返回数据查不到个别字段的问题
    目录SSM Mapper查询出返回数据查不到个别字段原因SSM查询不到数据库数据终于找到原因SSM Mapper查询出返回数据查不到个别字段 原因 开启了驼峰命名法则,Bean里的字...
    99+
    2024-04-02
  • mysql中查询字段为null的数据navicat问题怎么解决
    这篇“mysql中查询字段为null的数据navicat问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysql...
    99+
    2023-07-04
  • 如何解决SSM Mapper文件查询出返回数据查不到个别字段的问题
    这篇文章将为大家详细讲解有关如何解决SSM Mapper文件查询出返回数据查不到个别字段的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SSM Mapper查询出返回数据查不到个别字段原因开...
    99+
    2023-06-28
  • mybatis查询到了数据,但是实体类个别字段为null问题
    目录mybatis查询数据,实体类个别字段为null最终的最终发现查询的数据中有几个列为null 封装不上sql语句查询存在的列显示不存在问题数据小结一下mybatis查询数据,实体...
    99+
    2024-04-02
  • Mybatis如何按顺序查询出对应的数据字段
    目录Mybatis按顺序查询出对应的数据字段解决方法Mybatis基本查询、条件查询、查询排序Mybatis按顺序查询出对应的数据字段 今天遇到一个问题,就是写xml文件时,返回的顺...
    99+
    2024-04-02
  • 如何解决Mybatis查询时数据丢失的问题
    这篇文章主要为大家展示了“如何解决Mybatis查询时数据丢失的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Mybatis查询时数据丢失的问题”这篇文章吧。Mybatis查询时数据...
    99+
    2023-06-28
  • 如何优化数据量很大,分页查询很慢的问题
    这篇文章主要介绍“如何优化数据量很大,分页查询很慢的问题”,在日常操作中,相信很多人在如何优化数据量很大,分页查询很慢的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作