SQL---CONCAT系列函数

作者: ZK_8849 | 来源:发表于2018-12-23 11:20 被阅读15次

    MYSQL里的CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串。

    如下面的例子:

    mysql> select concat('11','22','33');

    +------------------------+

    | concat('11','22','33') |

    +------------------------+

    | 112233 |

    +------------------------+

    1 row in set (0.00 sec)

    MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL

    mysql> select concat('11','22',null);

    +------------------------+

    | concat('11','22',null) |

    +------------------------+

    | NULL   |

    +------------------------+

    1 row in set (0.00 sec)

    MySQL中concat_ws函数

    使用方法:

    contcat_ws(separator,str1,str2,...)

    contcat_ws() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。

    注意:

    如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

    如连接后以逗号分隔

    mysql> select concat_ws(',','11','22','33');

    +-------------------------------+

    | concat_ws(',','11','22','33') |

    +-------------------------------+

    | 11,22,33 |

    +-------------------------------+

    1 row in set (0.00 sec)

    和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL 

    mysql> select concat_ws(',','11','22',NULL);

    +-------------------------------+

    | concat_ws(',','11','22',NULL) |

    +-------------------------------+

    | 11,22 |

    +-------------------------------+

    1 row in set (0.00 sec)

    HQL里的CONCAT函数大致用法更SQL的相同

    我使用的常用形式为:

    select a, b, concat_ws(',' , collect_set(cast(c as string)))

    from table group by a,b;

    上文HQL中collect_set 有两个作用,第一个是去重,去除group by后的重复元素,

    第二个是形成一个集合,将group by后属于同一组的第三列集合起来成为一个集合。与contact_ws

    结合使用就是将这些元素以逗号分隔形成字符串。当使用collect_list是则不会去重,它会将第三列的集合全部都列出来

    cast ,用法cast(value as type),将某个列的值显示的转化为某个类型,cast(age as string ) 将int类型的数据转化为了String类型。

    相关文章

      网友评论

        本文标题:SQL---CONCAT系列函数

        本文链接:https://www.haomeiwen.com/subject/nkwgkqtx.html