concat和concat_ws()区别及group_concat() ,repeat()字符串函数

2023-12-10 21:58

本文主要是介绍concat和concat_ws()区别及group_concat() ,repeat()字符串函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、 concat () 函数
    1.1 MySQL的concat函数可以连接一个或者多个字符串
,
        mysql
> select concat ( '10' );
        +--------------+
        |
concat ( '10' ) |
        +--------------+
        |
10            |
        +--------------+
       
1 row in set ( 0.00 sec )

       
mysql > select concat ( '11' , '22' , '33' );
        +------------------------+
        |
concat ( '11' , '22' , '33' ) |
        +------------------------+
        |
112233                  |
        +------------------------+

       
1 row in set ( 0.00 sec )

       
而Oracle的concat函数只能连接两个字符串

        SQL
> select concat ( '11' , '22' ) from dual ;

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

        mysql
> select concat ( '11' , '22' , null );
        +------------------------+
        |
concat ( '11' , '22' , null ) |
        +------------------------+
        |
NULL                    |
        +------------------------+
       
1 row in set ( 0.00 sec )

       
而Oracle的concat函数连接的时候,只要有一个字符串不是NULL , 就不会返回NULL

        SQL
> select concat ( '11' , NULL ) from dual ;
       
CONCAT
       
--
       
11

2、concat_ws
() 函数 , 表示concat with separator , 即有分隔符的字符串连接
    如连接后以逗号分隔
        mysql
> select concat_ws ( ',' , '11' , '22' , '33' );

        +-------------------------------+
        |
concat_ws ( ',' , '11' , '22' , '33' ) |
        +-------------------------------+
        |
11 , 22 , 33                       |
        +-------------------------------+
       
1 row in set ( 0.00 sec )

   
和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 )

3、group_concat () 可用来行转列 , Oracle没有这样的函数 (mysql4.1及以上 )

    完整的语法如下
    group_concat
([ DISTINCT ] 要连接的字段 [ Order BY ASC / DESC 排序字段 ] [ Separator '分隔符' ])
   
如下例子
    mysql
> select * from aa ;

    +------+------+
    |
id    | name |
    +------+------+
    |    
1 | 10    |
    |    
1 | 20    |
    |    
1 | 20    |
    |    
2 | 20    |
    |    
3 | 200   |
    |    
3 | 500   |
    +------+------+
   
6 rows in set ( 0.00 sec )
    3.1 以id分组,把name字段的值打印在一行,逗号分隔 ( 默认 )
       
mysql > select id , group_concat ( name ) from aa group by id ;
        +------+--------------------+
        |
id    | group_concat ( name ) |
        +------+--------------------+
        |    
1 | 10 , 20 , 20            |
        |    
2 | 20                  |
        |    
3 | 200 , 500             |
        +------+--------------------+

       
3 rows in set ( 0.00 sec )

   
3.2 以id分组,把name字段的值打印在一行,分号分隔
        mysql
> select id , group_concat ( name separator ';' ) from aa group by id ;
        +------+----------------------------------+
        |
id    | group_concat ( name separator ';' ) |
        +------+----------------------------------+
        |    
1 | 10 ; 20 ; 20                          |
        |    
2 | 20                                |
        |    
3 | 200 ; 500                           |
        +------+----------------------------------+

       
3 rows in set ( 0.00 sec )

   
3.3 以id分组,把去冗余的name字段的值打印在一行,逗号分隔

        mysql
> select id , group_concat ( distinct name ) from aa group by id ;

        +------+-----------------------------+
        |
id    | group_concat ( distinct name ) |
        +------+-----------------------------+
        |    
1 | 10 , 20                        |
        |    
2 | 20                           |
        |    
3 | 200 , 500                      |
        +------+-----------------------------+

       
3 rows in set ( 0.00 sec )

   
3.4 以id分组,把name字段的值打印在一行,逗号分隔 , 以name排倒序

        mysql
> select id , group_concat ( name order by name desc ) from aa group by id ;

        +------+---------------------------------------+
        |
id    | group_concat ( name order by name desc ) |
        +------+---------------------------------------+
        |    
1 | 20 , 20 , 10                               |
        |    
2 | 20                                     |
        |    
3 | 500 , 200                                |
        +------+---------------------------------------+

       
3 rows in set ( 0.00 sec )

4、repeat () 函数,用来复制字符串 , 如下 'ab' 表示要复制的字符串,2表示复制的份数

    mysql
> select repeat ( 'ab' , 2 );

    +----------------+
    |
repeat ( 'ab' , 2 ) |
    +----------------+
    |
abab            |
    +----------------+

   
1 row in set ( 0.00 sec )

   
又如
    mysql
> select repeat ( 'a' , 2 );

    +---------------+
    |
repeat ( 'a' , 2 ) |
    +---------------+
    |
aa             |
    +---------------+
   
1 row in set ( 0.00 sec )

这篇关于concat和concat_ws()区别及group_concat() ,repeat()字符串函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478500

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php