数据库Mysql获取以逗号隔开字符串的第一个元素
Posted 小飞快飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库Mysql获取以逗号隔开字符串的第一个元素相关的知识,希望对你有一定的参考价值。
场景需求
有时会通过group_concat 获取一个分组查询后的字段以逗号隔开的字符串,而且还要按照时间排序取第一个
通俗的讲就是 获取时间最新的另一个字段的值
分组查询可以这么写:
group_concat(create_person order by create_time desc) as create_persons
以下查询sql中全部用 create_persons ,省略group_concat部分
具体实现
那么要取第一个有两种方法实现:
1、通过方法 SUBSTRING_INDEX
SUBSTRING_INDEX(create_persons,',', 1)
简单解释:
a、SUBSTRING_INDEX: 取一段字符串按照 特殊字符 分组后的 第几个字符串
b、第一个是从1开始的
2、通过方法 left 和 LOCATE
LEFT(create_persons, LOCATE(',',create_persons)-1)
简单解释:
a、LEFT(str, length):mysql左截取
b、LOCATE(substr,str):返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0
总结
第一种方案 更加的简约易懂
第二种略显繁杂,而且还有一个问题,如果字符串没有逗号,将无法获取到值,所以还得优化为一下sql
left(create_persons, if(LOCATE(',',create_persons)=0,length(create_persons),LOCATE(',',create_persons)-1))
是不是更复杂了,所以个人建议第一种
如果有更好的方案,欢迎留言讨论哟
以上是关于数据库Mysql获取以逗号隔开字符串的第一个元素的主要内容,如果未能解决你的问题,请参考以下文章