- CONCAT()
- CONCAT_WS()
- GROUP_CONCAT()
为了方便下面举例,这里放个student表供下面使用
s_id | s_name | s_sex |
---|---|---|
01 | 张三 | 男 |
02 | 李四 | 男 |
03 | 王五 | 男 |
04 | 赵六 | null |
一、CONCAT() :
最常用的字符串拼接方法,但遇到拼接中的字符串出现null的情况会返回null
- 语法:CONCAT(string1,string2)
DEMO1
[code]mysql > SELECT CONCAT(s_name,s_sex) FROM student+----------------------+CONCAT(s_name,s_sex)+----------------------+张三男赵四男王五男null
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
二、CONCAT_WS():concat with separator
比CONCAT的优点
- 多了个分隔符功能
- 如果某个字符串为null,会忽略null,并返回其他字符串的值
- 语法:CONCAT_WS(separator,str1,str2,…)
代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数
DEMO2
[code]mysql > SELECT CONCAT_WS(\'--\',s_name,s_sex) FROM student+-------------------------------+CONCAT_WS(\'--\',s_name,s_sex)+-------------------------------+张三--男赵四--男王五--男赵六
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
三、GROUP_CONCAT()
连接字段,多个值显示为一行
- 语法 :group_concat( [DISTINCT] 连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
连接的可以是多个字段,也可以对连接字段进行排序
DEMO3:
[code]mysql > SELECT GROUP_CONCAT(s_id) FROM student+--------------------------------------------+GROUP_CONCAT(s_id)+--------------------------------------------+01,02,03
- 1
- 2
- 3
- 4
- 5
DEMO4:连接多个字段,并以其中一个字段排序
[code]mysql > SELECT GROUP_CONCAT(s_id,s_name order by s_id desc) FROM student+--------------------------------------------+GROUP_CONCAT(s_id,s_name order by s_id desc)+--------------------------------------------+03王五,02赵四,01张三