数据库字段是逗号分隔的查询(FIND_IN_SET(str,strlist)方法的使用)

mysql in 逗号分隔_数据库字段是逗号分隔的查询(FIND_IN_SET(str,strlist)方法的使用) 上面的where语句和FIND_IN_SET('1',brand_management) > 0是相等的,只是默认查询的是索引。返回3(索引从1开始)函数介绍:返回在strlist中str字符串通过“,”分隔成列表后所在的位置(索引),如。使用函数FIND_IN_SET(str,strlist)--(推荐) 阅读详情

概述

在数据库设计字段时,有时候字段的值是逗号分隔的情况,如"客户"表中有个“客户经营品牌”字段,值是品牌表的“id”如:“1,4,6,12,18,23”。代表客户经营着多个品牌,当我们查询时,容易出现问题,比如我们想查询出品牌ID是‘1’的所有客户。如何解决呢?

 有些同学应该很快想到的是使用 like 关键字模糊查询如下:

select name,brand_management from t_customer where brand_management like '%1%'

可查询出来的结果很失望,查出的结果凡带“1”的全出查出来了。

虽然可以靠代码来过滤掉没用的结果,可并不是解决办法,今天介绍两种字段值是逗号分隔的查询如何处理。

一、首尾添加逗号(不推荐)

我们在添加或更新的时候有意在值的首尾添加分隔符如“,1,4,6,8,13,”。继续使用like模糊查询如下:

select name, brand_management from t_customer where brand_management like '%,1,%'

这种模糊查询就避免了id中带有1的其他id值的干扰,结果如下:这种方法可以处理分隔符不仅仅是逗号的情况,缺点是数据前后有符号不干净,并且sql优化中尽量少使用like查询。

二、使用函数FIND_IN_SET(str,strlist)--(推荐)

函数介绍:返回在strlist中str字符串通过“,”分隔成列表后所在的位置(索引),如

SELECT FIND_IN_SET("c", "a,b,c,d,e"); 返回3(索引从1开始)

有了这个方法再回到之前的sql语句可以变成如下:

select name,brand_management from t_customer where FIND_IN_SET('1',brand_management)

上面的where语句和FIND_IN_SET('1',brand_management) > 0 是相等的,只是默认查询的是索引 > 0的结果。

结果如下:完美解决(唯一的遗憾是字段值只能以逗号分隔)

怎么样看似解决困难的问题,通过一条sql语句就将复杂的查询交给Mysql处理了,是不是感觉太厉害了,多多运用Sql的函数处理,将会有很多意外的收获。

说句题外话,其实这种通过分隔符分隔的字段在设计数据库时是存在问题的,多对多的情况,应该创建“客户经营品牌”的中间表来解决,而不是以分隔符储存一个客户对应多个品牌的ID。希望本篇对你有所帮助。

(完)

DeepSeek+Dify之一安装部署 DeepSeek添加知识库 阅读详情

相关推荐

【iceberg数据一致性】iceberg如何保证高并发数据一致性

那么在高并发的时候,同时操作某张表时是如何运作的呢?其实这里iceberg引用了乐观锁的方法。其实在写入数据的时候是有一个验证的操作的,即在准备写入时会检查原文件和带写入文件的差异,如果存在本次写入数据以外的数据,则代表有其他操作已经更新了原文件,那么本次写入会取消,并重试写入的步骤,知道验证完成,写入完成,如此就保证了数据的一致性,并且也解决了HMS锁的问题。在使用iceberg写数据时,一直弄不清楚为什么iceberg写入快,并且能够保证数据的一致性。今天决定搞清楚这个问题,经过查询和理解,写下来。

你的博客 1042

mysql对以逗号分隔的字段内容进行查询——find_in_set函数或locate函数或position函数

mysql/mybatis对以逗号分隔的字段内容进行查询

分析知识 1万+

Case-Based Reasoning用于RAG

在做大模型应用RAG的时候,会发现一种特殊的场景,就是基于之前的case进行回答,比如法律咨询、医疗诊断等等。这种情况的问答,需要有强有力的case支持才行,有了case支持,大模型回答会更加准确。CBR这个概念已经很久了,它是一种人工智能推理方法,它的基本思想是:遇到新问题时,先回忆相似的过去案例,再基于这些案例进行调整,得到新问题的解答。Retrieve(检索):在案例库中找到与当前问题最相似的案例。Reuse(复用):借鉴案例的解决方案来应对当前问题。

sinat_28694519的博客 938

sql 查询-字段里是逗号,分隔开的数组,查询匹配数据

数据项 ID Name TypeIDArray 1 小明 1,2,3,4,5,6,7,8,9 2 小王 2,1,3,4,5,6,7,8,9 3 小红 1,2,10,11,12,13,14,15 4 小刘 2,1,10,11,12,13,14,15 5 小曾 2,3,12,20,21,22,23,24 6 小霏 3,2,12,20,21,22,23,24 第一种:c...

橙-极纪元-JJYCheng 6456

FID指标实战:如何用Python快速计算生成图像的质量分数(附完整代码)

本文详细介绍了如何使用Python计算Fréchet Inception Distance(FID)指标,以评估生成图像的质量。通过完整的代码示例和优化技巧,帮助开发者快速实现FID计算,并解读分数背后的实际意义,适用于GAN和扩散模型的性能评估。

weixin_28718487的博客 374

APO的全面进化之路(2):走向IBP、建设端到端供应链计划体系

前一篇记录阐述了在供应链计划(Supply Chain Planning)领域里SAP的关键产品APO的不断进化之路,即部分产品从APO进化到S/4HANA,本篇将继续阐述进化之路上的另一大中坚产品力量SAP-IBP(Integrated Business Planning)。作为SAP数字化供应链(Digital Supply Chain)中供应链计划SCP的左膀右臂,S/4HANA与IBP共同完善了计划域的完整闭环。本篇作为收尾,在先谈对IBP产品的个人认知之前,特别是在当今这个IT产品迭代多、技术革新

ChampaignWolf的专栏 5226

SQL查询字段中有逗号分隔的多数据字符串

记录一下 : 举个例,大概是下面这样的结构 表A表B IDNAME项目人员 1张三...

chuchaoCocol的博客 7542

新疆地形数据下载:30米、12.5米、5米DEM地形数据

新疆是我国陆地面积最大的省级行政区,总面积达166万平方公里。新疆的地形也十分的复杂,新疆的地形呈山脉与盆地相间排列,盆地被高山环抱,,俗称“三山夹两盆”。三山指阿尔泰山、昆仑山、天山,两盆是指塔里木盆地和准噶尔盆地。 对精度要求不高的话,可以直接使用图新地球下载 新疆30米地形数据 大小:9.26GB 来自ASTER v3的新疆30米地形数据 30米地形数据下载 新疆12.5米地形数据 12.5米DEM数据由于精度比较高,一般不会用到全省的数据,通常用的是一个地区的,因此,可以单独分

LocaSpace的博客 3495

【MySQL实践】使用FIND_IN_SET查询逗号隔开的数据&Mybatis-Plus的实现方式

项目中有一张表中有这么一个字段,这个字段的值是通过逗号隔开的数据,例如:`1,2,3,4,5`,并且在存储的时候这些数字并不是有序的,有可能是:`2,3,5,1,4`等等,当然也可能不完全是5个数字,也可能是:`1,5`,`2,3,5`等等。 对于逗号隔开的数据,可以通过函数来进行匹配,其他符号隔开的数据可以通过like函数来进行拼接。

积木成林,聚沙成塔 8271

基于STM32设计的老人摔倒检测报警系统【升级版】(235)

在 `235 基于STM32设计的老人摔倒检测报警系统(OneNet+MQTT)` 项目基础上增加了心率、血氧、体温测量3个功能。

1508

ppt保存时嵌入字体,但找不到字体使用的位置的解决办法

摘要 当PPT提示无法保存嵌入字体时,可通过VBA代码快速定位使用该字体的文本。具体步骤如下: 按ALT+F11打开VBA编辑器,新建模块并粘贴提供的代码; 运行代码后输入目标字体名称(如“方正兰亭黑简体”); 程序将列出所有使用该字体的幻灯片编号及对应文本内容; 修改这些文本的字体即可解决保存问题。该方法高效精准,适用于排查PPT字体嵌入失败的情况。(150字)

智慧空间实验室 1396

查询 一个字段里面 包含多个数值,数值是用逗号 隔开的

查询 一个字段里面 包含多个数值,数值是用逗号 隔开的

weixin_44492502的博客 622

SAP_PP模块定额工艺路线简介

在 SAP PP(生产计划)模块中,定额工艺路线(Routing) 是生产制造流程中的核心主数据之一,用于定义制造一个产品所需的标准操作步骤。工艺路线详细描述了生产过程中的各个工序、使用的工作中心、标准作业时间、资源分配等信息,是进行生产计划、成本核算、排产控制、车间执行等功能的基础。

我小时候很黑的博客 763

mysql in 逗号分隔_数据库字段是逗号分隔的查询(FIND_IN_SET(str,strlist)方法的使用)...

概述在数据库设计字段时,有时候字段的值是逗号分隔的情况,如"客户"表中有个“客户经营品牌”字段,值是品牌表的“id”如:“1,4,6,12,18,23”。代表客户经营着多个品牌,当我们查询时,容易出现问题,比如我们想查询出品牌ID是‘1’的所有客户。如何解决呢?有些同学应该很快想到的是使用 like 关键字模糊查询如下:select name,brand_management from t_cus...

weixin_36259438的博客 3026

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

laravel中查询条件包含某字段的值 但是用like解决不了(包含某个字符的参数)

mysql中FIND_IN_SET的使用方法 在mysql中,有时我们在做数据库查询时,需要得到某字段中包含某个值的记录,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,这时候mysql的Find_in_set函数就派上用场了,下面来具体了解一下 Find_in_set(str,strlist) str 要查询的字符串 strlist 字段名 参数...

ouxiaoxian的博客 3323

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

sql:函数:FIND_IN_SET(str,strList)

str 要查询的字符串 strList 字段名,参数以“,”分隔,如(1,2,6,8) 查询字段(strList)中包含的结果,返回结果null或记录。 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND...

不花的花和尚的博客 1636

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysql数据库用逗号切割字符串FIND_IN_SET(str,strlist)函数

一 事情缘由 Spring Security有5张表 ,分别是 用户表,角色表,权限表和2张关联表 我们做权限处理时没用关联表,所有在数据库存储时角色对应的权限是 用逗号分隔的字符串 在做表关联查询时,需要把改字符串用逗号切割,来匹配权限表的id, 这不就是切割字符串吗?博主微微一笑,简单! 先获取字符串,返回String类型,用java的String.split(","); 切好后存入集合, 在xml里用<foreach></foreach> 搞定! 功能是完成了但是非常辣

呆大王的博客 4848

MySQL---查询某个字段内容中存不存在某个数据,与like不同(FIND_IN_SET(str,strlist))

定义: 假如字符串str在由N子链组成的字符串列表strlist中,则返回值的范围在1到N之间。 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。 如果第一个参数是一个常数字符串,而第二个是typeSET列,则FIND_IN_SET()函数被优化,使用比特计算。 如果str不在strlist或strlist为空字符串,则返回值为0。 如任意一个参数为NULL,则返回值为NULL...

记忆、深处 2830

关于FIND_IN_SET(str,strlist)函数

FIND_IN_SET(str,strlist); 假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。一个字符串列表就是一个由一些被‘,'符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空

行者 1384

FIND_IN_SET函数使用

Select * from 表名 where FIND_IN_SET(传入参数,当前比较的列的属性) > 0 FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 注意如果strlist是常量,则可以直接用IN, 否则要用find_in_set()函数。 ...

wqr111的博客 851

mysql笔记-mysql常用操作

一、中文汉字按照拼音首字母排序 1、排序字段的字符编码是utf8_general_ci SELECT * FROM table t1 ORDER BY CONVERT(t1.`name` USING gbk) COLLATE gbk_chinese_ci ASC 2、排序字段的字符编码是 latin1_swedish_ci ORDER BY birary(t1.`name`) ASC 3、排序字段的字符编码是...

Bonrui编程路 1429

mysql 常用命令

mysql

u013268445的专栏 1041

数据库中某个表中的某个字段的值是用逗号隔开的多个值,根据逗号拆分并从另一个表中查出数据返回

有course 课程表 和 sys_user 用户表 其中我们的course表是存在着sys_user表的外键并且是以1,2的格式存在的外键 我们想要的结果是输出如下图 course课程表结构如下 sys_user表结构 关联关系说明如下: (1)course.teacherid = sys_user.user_id (2)course表中 teacherid 字段...

坚持去坚持。 693

mysql以逗号分隔的字段作为查询条件怎么查——find_in_set()函数

使用mysql时,有可能一个字段代表一个集合,如果将这个集合单独抽成一张表又不值当的,这个时候我们存储时,可以选择用逗号将数据分隔开(只能用英文的逗号),如图所示: 做查询时怎么查呢?假如说给一个数据作为查询条件,判断该字段是否存在,应该怎么查呢? 使用find_in_set()函数轻松实现,将sign字段中含有’唱歌’属性的数据查询出来,而不是用like。 假如说想要查询多个条件,比如说既符合 唱歌 、 又符合 跳舞 的,就可以这样写: 聚合查询count总数 怎么计算总数呢? 原始字段内容的长度 -

秃了也弱了 5582

记录一条sql查询:以逗号隔开的id字符串的查询

在一个项目中有两张表,一张是商品码表,一张是记录出库单明细的出库记录表,记录表中有一个字段保存了以逗号隔开的商品码表的id字符串,需要根据出库明细id查找到对应出库的商品码。

liqinglonguo的博客 1939

Mysql 逗号‘,’拼接的字符串怎么查询包含的匹配数据?

Mysql 逗号‘,’拼接的字符串怎么查询包含的匹配数据?

默默不代表沉默 4118
上一篇: Java Web路径获取方法
下一篇: Mybatis Plus的使用(Mybatis增强工具)- Mybatis从学习到忘记
小流至江河
博客等级 码龄9年 223粉丝 53原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值