在牛客网刷题是遇到这样的一道题觉得有必要总结一下,阐述如下:
将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分
拿到这道题一脸懵逼(数据库方面太差很多基本语法都没有了解——这也是我要写这篇博客的原因)。
当看了通过的代码以后答案是用sqlite写的(select last_name ||" "|| first_name as Name from employees)
由于出于好奇心所以就了解了一下在MySQL中是如何表示的,总结如下:
CONCAT():
使用方法:concat(str1,str2,str3,...) 返回结果为所有字符串连接在一起的值,如果有任何一个字符串为NULL返回的结果就为NULL。
select concat("a","b","c");
/*结果为abc*/
select concat("a","b",NULL)
/*结果为NULL*/
但是题目要求是要用 空格 隔开 貌似用concat()函数实现不了,那么mysql专门提供了concat_ws()函数
CONCAT_WS():
concat_ws()表示为可以用分隔符连接字符串的特殊形式的concat()函数
使用方法:concat_ws(separator,str1,str2,...) separator:分隔符可以为字符串,也可以是其他形式的参数。
注意:当分隔符为NULL时函数返回的是NULL,当字符串为NULL函数会忽略NULL返回不是其他非NULL的连接字符串
/*当分隔符为 ‘,’ 时*/
select concat_ws(',','a','b','c'); /*结果为 a,b,c*/
/*当分隔符为 NULL 时*/
select concat_ws(NULL,'a','b','c'); /*结果为null*/
/*当字符串为NULL时*/
select concat_ws(',','a',NULL,'c'); /*结果为a,c*/
所以在上述那一道题目中用MySQL语法表示为:
select concat_ws(' ',last_name,first_name) as Name from employees
这里last_name 和 first_name 是字段名所以不用加引号。。。