广告
返回顶部
首页 > 资讯 > 数据库 >SQL查询之字段是逗号分隔开的数组怎么查询匹配数据
  • 331
分享到

SQL查询之字段是逗号分隔开的数组怎么查询匹配数据

sql 2023-03-09 18:03:24 331人浏览 八月长安
摘要

这篇文章主要介绍“sql查询之字段是逗号分隔开的数组怎么查询匹配数据”,在日常操作中,相信很多人在SQL查询之字段是逗号分隔开的数组怎么查询匹配数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方

这篇文章主要介绍“sql查询之字段是逗号分隔开的数组怎么查询匹配数据”,在日常操作中,相信很多人在SQL查询之字段是逗号分隔开的数组怎么查询匹配数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL查询之字段是逗号分隔开的数组怎么查询匹配数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

    方式一: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,(^|,)表示数字前面必须是字符串开头或者是一个逗号,(,|$)表示数字后面必须是逗号或者字符串的结尾。这样就可以完整匹配逗号分隔的元素了。

    到此,关于“SQL查询之字段是逗号分隔开的数组怎么查询匹配数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    您可能感兴趣的文档:

    --结束END--

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

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

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

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作