zoukankan      html  css  js  c++  java
  • MySQL学习笔记:concat、concat_ws、group_concat —— 字符串连接

      在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 

  • 相关阅读:
    小组自评、互评及反馈
    "一个程序员的生命周期"读后感
    阅读《构建之法》第10-12章
    阅读《构建之法》第8,9,10章
    冒泡算法程序分析树的评论
    1014 C语言文法定义与C程序的推导过程
    0917 实验一词法分析程序
    0909 我与编译原理不得不说的秘密
    复利计算器4
    复利及单利计算
  • 原文地址:https://www.cnblogs.com/hider/p/9054687.html
Copyright © 2011-2022 走看看