mysql中的实现字段或字符串拼接的三种方式
2023-04-18 16:07:38 时间
一、CONCAT函数
concat函数是将多个字段或字符串拼接为一个字符串;但是字符串之间没有任何分隔。
-- CONCAT函数的语法如下:
CONCAT(str1,str2,...)
1.1、拼接非空字段或字符串
SELECT CONCAT(字段1,字段2,字段3,...) from 表名;
-- 拼接表字段示例
SELECT CONCAT(id,genre,release_year) result from movies;
执行结果如下:
SELECT CONCAT(字符串1,字符串2,字符串3,...) ;
-- 拼接字符串示例
SELECT CONCAT('张三','李四','王五') result;
执行结果如下:
1.2、拼接空(NULL)字段
如果拼接的字段中有一个为null,则结果为null。
SELECT CONCAT(字符串1,字符串2,字符串3,...) ;
-- 拼接含有NULL字符串示例
SELECT CONCAT('张三',NULL,'王五') result;
执行结果如下:
二、CONCAT_WS函数
concat_ws函数将多个字段或字符串拼接为一个字符串,且字符串直接可以指定分隔符;
-- CONCAT_WS函数的语法如下:
CONCAT_WS(separator,str1,str2,...)
2.1、拼接非空字段或字符串
-- 拼接非空字段示例:
SELECT CONCAT_WS(' ',id,genre,release_year) result from movies;
-- 拼接字符串示例:
SELECT CONCAT_WS(' ','张三','李四','王五') result ;
执行结果如下:
2.2、拼接空(NULL)字段
-- 拼接空(NULL)字符串示例:
SELECT CONCAT_WS(' ','张三',NULL,'王五') result ;
执行结果如下:
三、GROUP_CONCAT函数
group_concat函数可以将多行字段数据合并为一行;且内容之间可以指定分隔符;
-- group_concat函数的语法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val]
[LIMIT {[offset,] row_count | row_count OFFSET offset}])
3.1、默认以逗号分隔符连接
-- 默认的逗号分隔
SELECT GROUP_CONCAT(字段名) from 表名;
-- 默认逗号分隔示例:
SELECT GROUP_CONCAT(genre) from movies;
执行结果如下:
3.2、可自定义对字段去重排序和指定分隔符
3.2.1、自定义分隔符
-- 自定义字符串分隔符
SELECT GROUP_CONCAT(字段名 SEPARATOR '分隔符号') from 表名;
-- 示例:
SELECT GROUP_CONCAT(genre SEPARATOR ';') from movies;
3.2.2、将整数转为字符串
--将整数字段转为字符
SELECT GROUP_CONCAT(CAST(字段名 as CHAR) SEPARATOR '分隔符号') from 表名;
-- 示例
SELECT GROUP_CONCAT(CAST(id as CHAR) SEPARATOR ';') from movies;
执行结果如下:
3.2.3、多字段拼接
-- 多字段拼接
SELECT GROUP_CONCAT(字段1,字段2,字段3 SEPARATOR '分隔符号') from 表名;
-- 示例
SELECT GROUP_CONCAT(release_year,genre,imdb SEPARATOR ';') from movies;
执行结果如下:
3.2.4、字段去重排序和自定义分隔
-- 字段去重排序和自定义分隔
SELECT GROUP_CONCAT(DISTINCT 字段名 ORDER BY 字段名 asc或desc SEPARATOR '分隔符号') from movies;
-- 示例
SELECT GROUP_CONCAT(DISTINCT genre ORDER BY genre DESC SEPARATOR ';') from movies;
执行后结果如下:
3.3、group_concat的限制和设置
3.3.1、查看当前group_concat函数的长度
默认是1024字节即1k;
-- 查看当前group_concat函数的长度
show variables like 'group_concat_max_len';
执行结果如下:
3.3.2、设置当前Session的group_concat函数的长度,不影响其他的Session
-- 设置当前Session的group_concat的长度为1M
SET SESSION group_concat_max_len = 1048576;
执行结果如下:
3.3.3、设置全局 group_concat函数的长度,需断开后重新连接才生效
-- 设置全局 group_concat函数的长度,需断开后重新连接才生效
SET GLOBAL group_concat_max_len = 1048576;
执行结果如下:
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!