在牛客網刷題是遇到這樣的一道題覺得有必要總結一下,闡述如下:
將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 是字段名所以不用加引號。。。