溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mysql 數(shù)據(jù)庫(kù)中拼接字段的函數(shù)有哪些

發(fā)布時(shí)間:2020-11-16 14:46:22 來(lái)源:億速云 閱讀:502 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

這篇文章給大家介紹Mysql 數(shù)據(jù)庫(kù)中拼接字段的函數(shù)有哪些,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

給運(yùn)營(yíng)導(dǎo)出數(shù)據(jù)時(shí),難免需要對(duì)字段進(jìn)行拼接,如果 Mysql 可以完成的話,就可以少些很多代碼。

  • concat()
  • concat_ws()
  • group_concat()
     

Mysql 確實(shí)有幾個(gè)函數(shù)可以對(duì)字段進(jìn)行拼接。

concat()

將多個(gè)字段使用空字符串拼接為一個(gè)字段

mysql> select concat(id, type) from mm_content limit 10;
+------------------+
| concat(id, type) |
+------------------+
| 100818image   |
| 100824image   |
| 100825video   |
| 100826video   |
| 100827video   |
| 100828video   |
| 100829video   |
| 100830video   |
| 100831video   |
| 100832video   |
+------------------+
10 rows in set (0.00 sec)

不過(guò)如果有字段值為 NULL,則結(jié)果為 NULL。

mysql> select concat(id, type, tags) from mm_content limit 10;
+------------------------+
| concat(id, type, tags) |
+------------------------+
| NULL          |
| NULL          |
| NULL          |
| NULL          |
| NULL          |
| NULL          |
| NULL          |
| NULL          |
| NULL          |
| NULL          |
+------------------------+
10 rows in set (0.00 sec)

concat_ws()

上面這種方式如果想要使用分隔符分割,就需要每個(gè)字段中間插一個(gè)字符串,非常麻煩。

concat_ws() 可以一次性的解決分隔符的問(wèn)題,并且不會(huì)因?yàn)槟硞€(gè)值為 NUll,而全部為 NUll。

mysql> select concat_ws(' ', id, type, tags) from mm_content limit 10;
+--------------------------------+
| concat_ws(' ', id, type, tags) |
+--------------------------------+
| 100818 image          |
| 100824 image          |
| 100825 video          |
| 100826 video          |
| 100827 video          |
| 100828 video          |
| 100829 video          |
| 100830 video          |
| 100831 video          |
| 100832 video          |
+--------------------------------+
10 rows in set (0.00 sec)

group_concat()

最后一個(gè)厲害了,正常情況下一個(gè)語(yǔ)句寫(xiě)成這樣一定會(huì)報(bào)錯(cuò)的。

mysql> select id from test_user group by age;
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test_user.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

但是 group_concat() 可以將分組狀態(tài)下的其他字段拼接成字符串查詢出來(lái)

mysql> select group_concat(name) from test_user group by age;
+--------------------+
| group_concat(name) |
+--------------------+
| wen,ning      |
| wxnacy,win     |
+--------------------+
2 rows in set (0.00 sec)

默認(rèn)使用逗號(hào)分隔,我們也可以指定分隔符

mysql> select group_concat(name separator ' ') from test_user group by age;
+----------------------------------+
| group_concat(name separator ' ') |
+----------------------------------+
| wen ning             |
| wxnacy win            |
+----------------------------------+
2 rows in set (0.00 sec)

將字符串按照某個(gè)順序排列

mysql> select group_concat(name order by id desc separator ' ') from test_user group by age;
+---------------------------------------------------+
| group_concat(name order by id desc separator ' ') |
+---------------------------------------------------+
| ning wen                     |
| win wxnacy                    |
+---------------------------------------------------+
2 rows in set (0.00 sec)

如果想要拼接多個(gè)字段,默認(rèn)是用空字符串進(jìn)行拼接的,我們可以利用 concat_ws() 方法嵌套一層

mysql> select group_concat(concat_ws(',', id, name) separator ' ') from test_user group by age;
+------------------------------------------------------+
| group_concat(concat_ws(',', id, name) separator ' ') |
+------------------------------------------------------+
| 1,wen 2,ning                     |
| 3,wxnacy 4,win                    |
+------------------------------------------------------+
2 rows in set (0.00 sec)

關(guān)于Mysql 數(shù)據(jù)庫(kù)中拼接字段的函數(shù)有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI