在MySQL中,实现字符串拼接主要有以下3种函数:
  • concat(x,y,...)
  • concat_ws(分隔符,x,y,...)
  • group_concat(distinct xxx order by asd/desc yyy separator '分隔符')

一、concat函数

  concat()函数用于将多个字符串连接成一个字符串

  格式:concat(str1,str2,...)

-- mysql concat() --
SELECT CONCAT('I','love','somebody'); # Ilovesomebody
SELECT CONCAT('I',NULL,'somebody'); # NULL
SELECT CONCAT(14.4); # 14.4

注意:

  •   如果有任何一个参数为NULL,则返回值为NULL;
  •   如果所有参数为非二进制字符串,则返回非二进制字符串;
  •   如果含有任一二进制字符串,则返回一个二进制字符串;
  •   数字参数也会被转化为与之相等的二进制字符串格式,若要避免这种情况,可使用显式类型 cast,例如:
SELECT CONCAT(CAST(col_a AS CHAR), col_b) FROM table_xxx;

二、concat_ws函数

  concat_ws函数,concat with separator 分隔符,是concat()的特殊形式。

  格式:concat_ws(separator, str1, str2,...)

  •   第一个参数为分隔符,放在两个要连接的字符串之间。
SELECT CONCAT_WS('-','First','Second','Third'); # First-Second-Third
SELECT CONCAT_WS('-','First',NULL,'Third'); # First-Third

注意:

  •   如果分隔符为NULL,则结果为NULL;
  •   函数会忽略任何分隔符参数后的NULL值;
  •   函数不会忽略任何空字符串,但是会忽略所有NULL值;

三、group_concat函数

  group_concat函数,实现分组查询之后的数据进行合并,并返回一个字符串结果。

  格式:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc  ] [separator '分隔符'] )

  •   通过使用distinct可以排除重复值;
  •   如果希望对结果中的值进行排序,可以使用order by子句;
  •   separator是一个字符串值,默认为逗号分隔。
SELECT id,
GROUP_CONCAT(DISTINCT num ORDER BY num DESC SEPARATOR '$') AS cont
FROM test.t_2
GROUP BY id;

结果:

  

group_concat还可以与concat_ws嵌套使用,实现更加复杂功能。


四、其他字符串连接杂谈

  • “+” & || (不行)
  • Mysql使用“+”进行字符拼接的时候,会尝试将两端的字段值转换为数字类型,如果转换失败则认为字段值为0
  • oracle使用||进行字符串拼接,concat 只支持2个参数,可以多个嵌套使用
  • MS 使用+进行字符串拼接

END 2018-05-18 15:02:49

MySQL学习笔记:concat、concat_ws、group_concat —— 字符串连接的更多相关文章

  1. Mysql学习笔记—concat以及group_concat的用法(转载)

    本文中使用的例子均在下面的数据库表tt2下执行: 一.concat()函数 1.功能:将多个字符串连接成一个字符串. 2.语法:concat(str1, str2,...) 返回结果为连接参数产生的字 ...

  2. mysql中的concat,concat_ws(),group_concat()

    mysql中的concat,concat_ws(),group_concat() 说明: 本文中使用的例子均在下面的数据库表tt2下执行:     一.concat()函数 1.功能:将多个字符串连接 ...

  3. Mysql学习笔记(四)字符串函数

    PS:终于看完了字符串函数,心都快碎了...涉及的函数真是太多了...感觉这里的字符串函数和JAVA里的基本都差不多了...基本上算是掌握了,但是想全记住那是不太可能的... 学习内容: 字符串函数的 ...

  4. 【mysql学习笔记整理】

    /*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...

  5. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  6. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  7. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  8. [转]MySQL中函数CONCAT及GROUP_CONCAT

    一.CONCAT()函数 CONCAT()函数用于将多个字符串连接成一个字符串. 使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为 +-- ...

  9. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  10. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

随机推荐

  1. 二分查找(等于x,小于x,小于等于x,大于x,大于等于x )

    //等于x//小于x//小于等于x//大于x//大于等于x #include <cstdio> #include <cstdlib> #include <cmath> ...

  2. lumen 增加视图路径

    在 ServiceProvider 里面加上 app('view')->addLocation(module_path('Develop') . '/resources/views');

  3. linux命令总结之netstat命令

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  4. Mongo副本集搭建

    解压mongodb-linux-x86_64-rhel70-3.2.0.tgz 将解压后的bin路径添加到系统环境变量,保证mongo.mongod等命令可用 创建副本集目录mongo/27017.2 ...

  5. python中super与成员属性

    super的使用直接看例子: class A(): def __init__(self, a): print('init A...') self.a = a class B(A): def __ini ...

  6. element ui 栅格布局

    <el-row> <el-col :span="24"><div class="grid-content bg-purple-dark&qu ...

  7. go build 不同系统下的可执行文件

    Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能. 1.Mac下编译Linux, Windows平台的64位可执行程序: 1 2 $ CGO_ENABLED=0 GOOS=linu ...

  8. Kafka安装验证及其注意

    一.Zookeeper 配置文件说明: # the directory where the snapshot is stored. dataDir=/tmp/zookeeper # the port ...

  9. AngularJS - 下一个大框架

    AngularJS AngularJS是web应用的下一个巨头. AngularJS如果为创建web应用而设计,那它就是HTML的套路了.具有数据绑定, MVW, MVVM, MVC, 依赖注入的声明 ...

  10. bzoj1190 [HNOI2007]梦幻岛宝珠

    传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1190 [题解] 首先,我们把所有物品都分解成$a\times 2^b$的形式,然后把物品按 ...