concat()可以把字符串合并到一起,在对于需要判断两个不同条件的时候,比较有用,把两个条件进行合并,很简便,函数的参数和格式为:
concat(str1, str2,...)
其中str1,str2分别是需要连接的文本。
当其中一个参数为NULL时,整体输出为NULL。
例子:
select concat('1','NULL') from dual;
输出如下:
当其中有一个为NULL时:
select concat('1',NULL, '1') from dual;
注意,其中的NULL和之前的'NULL'不一样!
可以得到输出结果为:
concat_ws()函数
这个函数功能和concat是类似的,但是多了一个添加分隔符的功能,格式如下:
concat_ws(separator, str1, str2, ...)
其中separator是分隔符,从str1和str2之间开始添加。
例如:
SELECT
concat_ws ( '/', 'NULL', '1' )
FROM
DUAL;
可以得到输出为:
这个函数中,当字符串str1,str2等为NULL时,只是单纯的省略这个参数不加分隔符,但是字符串不会为NULL。
SELECT
concat_ws ( '/', 'NULL', '1', NULL, '2' )
FROM
DUAL;
输出为:
可以看到,第三个字符串的NULL被省略了。
当第一个参数(分隔符)为NULL时,整体为NULL。
SELECT
concat_ws ( NULL, 'NULL', '1', NULL, '2' )
FROM
DUAL;
输出为:
group_concat()
该函数需要配合group by关键字使用,作用是把分组出来的字段按组进行合并。格式如下:
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
例如:
有表如下:
employee表
SELECT
GROUP_CONCAT( MONTH order by salary desc separator '*')
FROM
employee
GROUP BY
Id
输出如下:
看起来比较难以理解,解释一下:
- 按照id分组,分完之后,month的个数是不同的。
- group_concat中第一个就是要合并的字段,这里是month,那就是把month合并到一起。
- 第二个order by代表的是排列的顺序,按照salary降序排列,很明显输出结果是按照每个month的salary排序的。
- 第三个是separator ,也就是分隔符。
在分组函数中进行连接,某些时候会比较方便。
网友评论