05-常用函数group_concat,concat_ws(),find_in_set()
创始人
2024-06-01 03:02:29
0

group_concat()

能将相同的行组合起来

完整语法

group_concat**(** [DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

使用实例

+------+------+
|  id  | name |
+------+------+
|id    | name |
|1     | 10   |
|1     | 20   |
|1     | 20   |
|2     | 20   |
|3     | 200  |
|3     | 500  |

以id分组,把name字段的值打印在一行,逗号分隔(默认)

select id, group_concat(name) from aa group by id;  +------+--------------------+
|  id  | group_concat(name) |
+------+--------------------+
|1     | 10,20,20           |
|2     | 20                 |
|3     | 200,500            |
+------+--------------------+

指定分隔符

select id,group_concat(name separator '/')  from aa group by id; +------+----------------------------------+
| id   | group_concat(name separator ';') |
+------+----------------------------------+
|1     | 10/20/20                         |
|2     | 20                               |
|3     | 200/500                          |
+------+----------------------------------+

去掉冗余值(distinct的使用)

以id分组,把去冗余的name字段的值打印在一行

select id, group_concat(distinct name) from aa group by id;  +------+-----------------------------+
| id   | group_concat(distinct name) |
+------+-----------------------------+
|1     | 10,20                       |
|2     | 20                          |
|3     | 200,500                     |
+------+-----------------------------+

排序

以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序

select id,group_concat(name order by name desc) from aa group by id;+------+---------------------------------------+
| id   | group_concat(name order by name desc) |
+------+---------------------------------------+
|1     | 20,20,10                              |
|2     | 20                                    |
|3     | 500,200                               |
+------+---------------------------------------+

concat_ws()

concat_ws() 和 concat()一样,是将多个字符串连接成一个字符串,但是可以指定分隔符

语法

concat_ws(separator, str1, str2, …) 第一个参数指定分隔符, 后面依旧是字符串

**注意:**分隔符不能为null,如果为null,则返回结果为null。

使用实例

以逗号分割

select concat_ws(',', pname, page, psex) from per;  +-----------------------------------+| concat_ws(',', pname, page, psex) |+-----------------------------------+| 王小华,30,男                      || 张文军,24,男                      || 罗敏,19,女                        |+-----------------------------------+

分隔符指定为null

select concat_ws(null, pname, page, psex) from per;+------------------------------------+| concat_ws(null, pname, page, psex) |+------------------------------------+| NULL                               || NULL                               || NULL                               |+------------------------------------+

find_in_set()

FIND_IN_SET(str, strlist)

str 要查询的字符串

strlist 字段名 参数以”,”分隔 如 (1, 2, 6, 8, 10, 22)

查询字段(strlist)中包含(str)的结果,返回结果为索引位置(索引值从1开始)或null

如果str不在strlist 或 strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL

SELECT FIND_IN_SET('b', 'a,b,c,d'); -- 返回值为2
SELECT FIND_IN_SET('1', '1');       -- 返回值为1
SELECT FIND_IN_SET('2', '1,2');    -- 返回值为2
SELECT FIND_IN_SET('6', '1');       -- 返回0 strlist中不存在str,所以返回0。
SELECT FIND_IN_SET(null, '1');      -- 返回值为null
SELECT FIND_IN_SET('6', null);      -- 返回值为null

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...