在mysql中,concat、concat_ws和GROUP_CONCAT
在mysql中,concat、concat_ws和GROUP_CONCAT
CONCAT函数
在mysql中,concat函数的作用是将多个字符串连接成一个字符串
语法:
1 | CONCAT(str1,str2,...) |
案例:
1 | SELECT CONCAT("奶油","蛋糕") |
输出
1 | 奶油蛋糕 |
即将字符串”奶油“和”蛋糕“拼接成”奶油蛋糕“
但是,必须保证concat中所有参数都不为null,但凡有一个为null,则返回值为null
1 | SELECT CONCAT("奶油","蛋糕",null) |
输出
1 | null |
如果用于模糊查询
1 | SELECT * FROM `students` WHERE grade like CONCAT("%","一","%") |
CONCAT_WS函数
语法
1 | CONCAT_WS(separator,str1,str2,...) |
separator 为指定分隔符,且必须放在第一个
案例
1 | SELECT CONCAT_WS("-","湖北省","武汉市") |
输出
1 | 湖北省-武汉市 |
分隔符不能为null,否则返回null
1 | SELECT CONCAT_WS(NULL,"湖北省","武汉市") |
返回
1 | null |
但是字符串可以为null,为null则不拼接
1 | SELECT CONCAT_WS("-","湖北省",null,"武汉市") |
返回
1 | 湖北省-武汉市 |
为了方便后面练习,请输入下列sql建表
1 | CREATE TABLE `students` ( |
再插入几条数据
1 | INSERT INTO students ( `name`, age, grade, class ) |
GROUP_CONCAT函数
语法
1 | GROUP_CONCAT( |
参数详解:
expr [, expr2 …] :必须写。指定要连接的一个或者多个列或者表达式
ORDER BY:可选。对连接内容进行排序
SEPARATOR separator:可选。separator
连接符。默认是 ,
。
但是我们通常在mysql中用如下方式使用group_concat()函数
1 | SELECT GROUP_CONCAT(expr), ... |
案例一:
1 | SELECT |
输出
1 | 张三-李四-王五-赵六-钱七 |
案例二:
根据年龄排序串联
1 | SELECT |
输出
1 | 李四-张三-王五-钱七-赵六 |
案例三:
1 | SELECT |
输出
name | 教室 |
---|---|
张三 | 一年级一班/二年级一班 |
李四 | 一年级二班 |
王五 | 一年级三班 |
钱七 | 二年级二班 |
这里,我们在 GROUP_CONCAT()
函数中传入了多个列。但是需要注意,班级和年级之间直接拼到了一起,中间并没有连接符
如果我们需要在年级和班级之间加一个连接符,则需要按如下来写
1 | SELECT |
或者
1 | SELECT |
输出
name | 教室 |
---|---|
张三 | 一年级-一班/二年级-一班 |
李四 | 一年级-二班 |
王五 | 一年级-三班 |
钱七 | 二年级-二班 |
评论