MySQL的CONCAT()

在牛客網刷題是遇到這樣的一道題覺得有必要總結一下,闡述如下:

將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 是字段名所以不用加引號。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章