ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### concat()函数 #### 1. 功能: 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 #### 2. 语法 ``` concat(str1, str2,...) ``` #### 3. 例子 案例一: ``` mysql> select concat('苹果','香蕉','梨子'); +------------------------------+ | CONCAT('苹果','香蕉','梨子') | +------------------------------+ | 苹果香蕉梨子 | +------------------------------+ ``` 案例二:出现 null 的情况 ``` mysql> select concat('苹果','香蕉',null); +----------------------------+ | CONCAT('苹果','香蕉',null) | +----------------------------+ | NULL | +----------------------------+ ``` ### concat_ws()函数 #### 1. 功能 concat_ws()函数功能和concat()一样,将几个字符串拼接起来,只不过可以指定分隔符。 #### 2. 语法 ``` concat_ws(separator, str1, str2, ...) ``` #### 3. 例子 案例1:将水果连接起来,并通过逗号分隔 ``` mysql> select concat_ws(',','苹果','香蕉','梨子'); +-------------------------------------+ | concat_ws(',','苹果','香蕉','梨子') | +-------------------------------------+ | 苹果,香蕉,梨子 | +-------------------------------------+ ``` 案例2:参数出现 null 时,则忽略该参数 ``` mysql> select concat_ws(',','苹果',null,'梨子'); +-----------------------------------+ | concat_ws(',','苹果',null,'梨子') | +-----------------------------------+ | 苹果,梨子 | +-----------------------------------+ ``` 案例3:如果参数全部为 null , 则返回空字符串 ``` mysql> select concat_ws(',',null,null,null); +-------------------------------+ | concat_ws(',',null,null,null) | +-------------------------------+ | | +-------------------------------+ ``` 案例4:如果分隔符为 null ,则结果为 null ``` mysql> select concat_ws(null,'苹果','香蕉','梨子'); +--------------------------------------+ | concat_ws(null,'苹果','香蕉','梨子') | +--------------------------------------+ | NULL | +--------------------------------------+ ``` ### group_concat()函数 #### 1. 功能 将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 #### 2. 语法 ``` group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] ) ``` 说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。 #### 3. 例子 准备数据 ,这里我们六年级故意多弄一个,为了方便后面测试 ``` insert into table1 (study_section , grade ) values ('小学','一年级'), ('小学','二年级'), ('小学','三年级'), ('小学','四年级'), ('小学','五年级'), ('小学','六年级'), ('小学','六年级'), ('初中','初一'), ('初中','初二'), ('初中','初三'), ('高中','高一'), ('高中','高二'), ('高中','高三'); ``` 案例一:根据学段获取每个学段的年级 ``` select study_section,group_concat(grade) from table1 group by study_section; ``` 最后执行结果: ![](https://img.kancloud.cn/8d/3d/8d3d92533c541dae9913e44c8158870c_192x323.png) 案例二:去除重的年级 ``` select study_section,group_concat(distinct grade) from table1 group by study_section; ``` 最后执行效果 ![](https://img.kancloud.cn/1e/ca/1eca1af22f958e90e05da7117ededcc2_424x98.png) 案例三:指定排序顺序 按照年级进行升序排列 ``` mysql> select study_section,group_concat(distinct grade order by grade asc) from table1 group by study_section; +---------------+-------------------------------------------------+ | study_section | group_concat(distinct grade order by grade asc) | +---------------+-------------------------------------------------+ | 初中 | 初一,初三,初二 | | 小学 | 一年级,三年级,二年级,五年级,六年级,四年级 | | 高中 | 高一,高三,高二 | +---------------+-------------------------------------------------+ ``` 按照年级进行降序排列 ``` mysql> select study_section,group_concat(distinct grade order by grade desc) from table1 group by study_section; +---------------+--------------------------------------------------+ | study_section | group_concat(distinct grade order by grade desc) | +---------------+--------------------------------------------------+ | 初中 | 初二,初三,初一 | | 小学 | 四年级,六年级,五年级,二年级,三年级,一年级 | | 高中 | 高二,高三,高一 | +---------------+--------------------------------------------------+ ``` 案例四:指定分割符号 默认用逗号分隔,这里指定用分号进行分隔 ``` mysql> select study_section,group_concat(distinct grade order by grade separator ';') from table1 group by study_section; +---------------+-----------------------------------------------------------+ | study_section | group_concat(distinct grade order by grade separator ';') | +---------------+-----------------------------------------------------------+ | 初中 | 初一;初三;初二 | | 小学 | 一年级;三年级;二年级;五年级;六年级;四年级 | | 高中 | 高一;高三;高二 | +---------------+-----------------------------------------------------------+ ```