MySQL实现字段或字符串拼接的三种方式总结

 更新时间:2023年01月05日 14:12:34   作者:牛奶咖啡13  
这篇文章主要为大家详细介绍了MySQL中实现字段或字符串拼接的三种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

一、CONCAT函数

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函数的语法如下:
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函数的官方介绍翻译

-- 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;

执行结果如下:

到此这篇关于MySQL实现字段或字符串拼接的三种方式总结的文章就介绍到这了,更多相关MySQL字段 字符串拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql备份脚本以及删除前5天的备份文件

    mysql备份脚本以及删除前5天的备份文件

    mysql备份脚本在网上有很多的,在本文将为大家详细介绍下如何删除前5天的备份文件,感兴趣的朋友不要错过
    2013-10-10
  • MySQL服务器线程数的查看方法详解

    MySQL服务器线程数的查看方法详解

    这篇文章主要介绍了MySQL服务器线程数的查看方法,结合实例形式分析了mysql线程数查看的相关命令、配置、参数及相关使用技巧,需要的朋友可以参考下
    2018-03-03
  • MySQL实现批量插入测试数据的方式小结

    MySQL实现批量插入测试数据的方式小结

    在开发过程中我们不管是用来测试性能还是在生产环境中页面展示好看一点, 经常需要一些测试数据, 本文主要介绍了两种常用的MySQL测试数据批量生成方式,希望对大家有所帮助
    2023-11-11
  • MySQL去重该使用distinct还是group by?

    MySQL去重该使用distinct还是group by?

    这篇文章主要介绍了MySQL去重该使用distinct还是group by,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • mysql 8.0.11安装教程图文解说

    mysql 8.0.11安装教程图文解说

    本文通过图文并茂的形式给大家介绍了mysql 8.0.11安装教程,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • MySQL查询随机数据的4种方法和性能对比

    MySQL查询随机数据的4种方法和性能对比

    从MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点。
    2014-04-04
  • MySQL execute、executeUpdate、executeQuery三者的区别

    MySQL execute、executeUpdate、executeQuery三者的区别

    这篇文章主要介绍了MySQL execute、executeUpdate、executeQuery三者的区别的相关资料,需要的朋友可以参考下
    2017-05-05
  • 原来MySQL 数据类型也可以优化

    原来MySQL 数据类型也可以优化

    这篇文章主要介绍了原来MySQL 数据类型也可以优化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • Navicat连接MySQL出现2059错误的解决方案

    Navicat连接MySQL出现2059错误的解决方案

    当使用Navicat连接MySQL时,如果出现错误代码2059,表示MySQL服务器不接受Navicat提供的加密插件,解决方法主要有两种:一是修改MySQL用户的认证插件为mysql_native_password,二是升级Navicat到最新版本以支持MySQL8.0及其默认的caching_sha2_password认证插件
    2024-10-10
  • Mysql实现全文检索、关键词跑分的方法实例

    Mysql实现全文检索、关键词跑分的方法实例

    这篇文章主要给大家介绍了关于Mysql实现全文检索、关键词跑分的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论