我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql将字符串按照指定字符分割的正确方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql将字符串按照指定字符分割的正确方法

前言

在某些场景下(比如:用户上传文件或者图片等),一般的做法是将文件信息(文件名,文件路径,文件大小等)保存到文件表(user_file)中,然后再将用户所有上传的文件的id用一个指定字符拼接然后存在表(user)中某个字段里(假设是:file_ids)。
在展示用户上传的文件时就直接查询文件表中就好了:

-- 一般的语句是这样的,假设用户唯一键是id
select * from file where id in(select file_ids from user where id = 1);

sql语句没有问题,文件也能查询出来,但是,上传的文件大于1个后,再用这个sql语句查询就只返回1条记录了,可能就会疑惑了,为什么只返回一条记录???;

肯定有人做过这样的验证

-- 先运行下面这个sql,正确返回1,2,3 假设上传的文件id是1,2,3;
select file_ids from user where id = 1
-- 然后返回的文件id写死在sql语句中,运行成功返回3条记录
select file_ids from user where id in ('1' , '2' , '3');
-- 最后再整体试了下,结果返回一条......
select * from file where id in(select file_ids from user where id = 1)

-- 然后可能会想到:我把in里面的拼接成'1','2','3',这样总可以了吧?
select * from file where id in (select concat('\'', replace(file_ids,',','\',\'') ,'\'') from user where id = 1);
-- concat('\'', replace(file_ids,',','\',\'') ,'\'') 确实能拼接成上面说的形式,但是结果还是只有一条

是因为这个查询只返回一个字段,所以只会返回一条记录(即使有多个逗号拼接,或者是手动拼接的,Mysql只认为是一个值,具体底层不清楚…),正确做法如下:

一:分两次查询(不是本文重点,但可以实现)

select file_ids from user where id = 1

select file_ids from user where id in ('1' , '2' , '3');
或者
select file_ids from user where find_in_set(id , '1,2,3');

二:将file_ids字段分割成多列,类似Mysql的行转列

与Mysql行转列区别:行转列要知道列的内容,而这个不用,只需知道拼接的字符就行了

-- 下面语句将会把1,2,3,4一个字段转换成四行,依次是1,2,3,4
SELECT
	a.id,
	a.file_ids,
	substring_index(
		substring_index(
			a.file_ids,
			',',
			b.help_topic_id + 1
		),
		',' ,- 1
	) file_id
FROM
	user a
JOIN mysql.help_topic b ON b.help_topic_id < (
	length(a.file_ids) - length(REPLACE(a.file_ids, ',', '')) + 1
)
where id = 1
;
-- 然后将上面语句写在in()里面就行了,写在in()里面的话记住只能查询一个字段哦!

上面语句可以直接复制过去,只需将a表及a表字段换成自己的表明及字段就行了,至于mysql.help_topic,是Mysql自带的,不用管的。

附:mysql如何将字符串按分隔符拆分

1.字符串拆分: SUBSTRING_INDEX(pressure 136/70 血压),例如:

SUBSTRING_INDEX(pressure ,',',1)     #截取第一个逗号(,)号以前的字符串
SUBSTRING_INDEX(pressure ,',',-1)    #截取倒数第一个逗号(,)号以后的字符串

2.替换函数:replace( str, from_str, to_str)。例如:

UPDATE bgs_building_copy1 SET `name`=replace(`name`,'=',"");    #替换等号为空字符串

总结

到此这篇关于Mysql将字符串按照指定字符分割的文章就介绍到这了,更多相关Mysql字符串分割内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql将字符串按照指定字符分割的正确方法

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

下载Word文档

猜你喜欢

Mysql如何将字符串按照指定字符分割

这篇文章主要介绍“Mysql如何将字符串按照指定字符分割”,在日常操作中,相信很多人在Mysql如何将字符串按照指定字符分割问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql如何将字符串按照指定字符分割
2023-06-30

shell 使用指定的分割符来分割字符串的方法

shell 如何用指定的分隔符来分割字符串让结果为一个字符串数组,类似 java 中的 split, 而 split 关键字已经留给文件分割了,故字符串就分割处理就不能在使用了,那如何来处理字符串串分http://www.cppcns.co
2022-06-04

Mysql 按照指定字符串顺序排序

问题 :排序中。 假如每一条记录都有一个字段。“交通工具” 。 假如我现在想要查询结果按照我指定的字符串来排序(不是字符顺序排序), 例如,按照 飞机-轮船-汽车 的顺序进行排序。在不用分组的情况下。 有没有类似这样的写法? order by ("

	Mysql 按照指定字符串顺序排序
2021-05-28

javascript分割字符串的方法

这篇文章给大家分享的是有关javascript分割字符串的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。分割方法:1、用“string.split(分割符)”;2、用“String.substring(开始位
2023-06-14

python中partition分割字符串的方法

小编给大家分享一下python中partition分割字符串的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明根据指定的分隔符分割文字符串。如果字串中含
2023-06-15

java分割文本字符串的方法

问题:在项目中,当保存数据超过数据库字段列长度限制时,如何解决?一种常见的解决办法是:截串存取。顾名思义,就是对大文本数据按指定长度进行截取,返回结果集依截取顺序存储在新表中。并通过在新表中创建一个type字段来标识新表中截取的内容对应旧表
2023-05-31

c语言查找字符串指定字符的方法

小编给大家分享一下c语言查找字符串指定字符的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器
2023-06-14

Java字符串的截取和分割方法

这篇文章主要讲解了“Java字符串的截取和分割方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java字符串的截取和分割方法”吧!一、字符串的截取和分割1.在程序开发中,有些时候我们需要对
2023-06-15

mysql切割字符串的方法是什么

在MySQL中,可以使用SUBSTRING_INDEX函数来切割字符串。该函数接受三个参数,即要切割的字符串,分隔符以及要返回的子字符串的位置。例如,假设有一个字符串"apple,banana,orange",想要切割并返回第二个子字符串
mysql切割字符串的方法是什么
2024-05-10

php字符串替换指定字符的方法是什么

PHP字符串替换指定字符的方法是使用字符串函数中的str_replace()函数。str_replace()函数可以在一个字符串中查找并替换指定的字符或字符串,语法如下:```phpstr_replace($search, $replace
2023-05-13

java判断字符串是否含有指定字符的方法

java判断字符串是否含有指定字符的方法:1、使用contains方法判断当且仅当此字符串包含指定的char值序列,java.lang.String.contains() 方法返回true。声明:public boolean contains(CharSequ
java判断字符串是否含有指定字符的方法
2021-09-15

JavaScript删除字符串中指定字符的4种方法汇总

在前端面试中,经常会问到这样的一个问题,删除字符串中指定字符,下面这篇文章主要给大家介绍了关于JavaScript删除字符串中指定字符的4种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-12-09

Golang字符串是否以指定字符结尾的判断方法

标题:Golang中判断字符串是否以指定字符结尾的方法在Go语言中,有时候我们需要判断一个字符串是否以特定的字符结尾,这在处理字符串时十分常见。本文将介绍如何使用Go语言来实现这一功能,同时提供代码示例供大家参考。首先,让我们来看一下G
Golang字符串是否以指定字符结尾的判断方法
2024-03-12

编程热搜

目录