数据库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获取以逗号隔开字符串的第一个元素的主要内容,如果未能解决你的问题,请参考以下文章

数据库Mysql获取以逗号隔开字符串的第一个元素

MYSQL列中的数据以逗号隔开,如何查询?

mysql中怎么拆分以逗号隔开的字符串

mysql查询某数字在某字段以逗号隔开的字符里面

mysql中怎么实现对含有逗号的字符串进行以

MYSQL列中的数据以逗号隔开,如何查询?