group_concat:
mysql中group_concat函式能將相同的行組合起來
完整的語法如下:
group_concat([distinct] 要連線的字段 [order by asc/desc 排序字段] [separator '分隔符'])
使用示例:
select * from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
6 rows in set (0.00 sec)
select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)
1.int欄位的連線陷阱
當你用group_concat的時候請注意,連線起來的字段如果是int型,一定要轉換成char再拼起來,
否則在你執行後(executescalar或者其它任何執行sql返回結果的方法)返回的將不是乙個逗號隔開的串,
而是byte。
該問題當你在sqlyog等一些工具中是體現不出來的,所以很難發現。
select group_concat(ipaddress) from t_ip 返回逗號隔開的串
select group_concat(id) from t_ip 返回byte
select group_concat(cast(id as char)) from t_dep 返回逗號隔開的串
select group_concat(convert(id , char)) from t_dep 返回逗號隔開的串
附cast,convert的用法:
cast(expr as type), convert(expr,type) , convert(expr using transcoding_name)
cast() 和convert() 函式可用來獲取乙個型別的值,並產生另乙個型別的值。
這個型別 可以是以下值其中的 乙個:
binary[(n)]
char[(n)]
date
datetime
decimal
signed [integer]
time
unsigned [integer]
2.長度陷阱
用group_concat連線欄位的時候是有長度限制的,並不是有多少連多少。但你可以設定一下。
使用group_concat_max_len系統變數,你可以設定允許的最大長度。
程式中進行這項操作的語法如下,其中 val 是乙個無符號整數:
set [session | global] group_concat_max_len = val;
若已經設定了最大長度, 則結果被截至這個最大長度。
在sqlyog中執行 set global group_concat_max_len = 10 後,重新開啟sqlyog,設定就會生效。
請注意,這種方式只是臨時的,如要長久的修改,則需要修改mysql的配置節。
到my.cnf的mysqld節點下加上group_concat_max_len =99999……
重啟mysql。
concat:
用來連線字段,或者字元。但是只要被連線的字段中有乙個值為null,則concat得到的就是null。
這是個非常危險的玩意。我相信用concat連線多個欄位的人想要的結果多半不是這樣:
concat(a,b),如果b為null,那麼concat(a,b)=null
我們想要的是這樣的:
連線a,b,如果b為null,那麼連線後應該是a。
這時應該用concat_ws(separator, str1, str2,...)
陣列 concat和join方法
doctype html en utf 8 viewport content width device width,initial scale 1.0 document title head concat 陣列的合併 var a 1 2,3 4,5 55,5 var b 0,89,5,2,1,1 陣...
hive函式中concat與concat ws區別
函式用於將多個字串連線成乙個字串。語法 concat str1,str2,返回值 string 特點 如有任何乙個引數為null 則返回值為 null。舉例 案例1 將test1中的字段拼接成乙個字串 test1中的欄位名abc下的資料也為abc,下同 hive select concat abc,...
深度學習中Concat層和Flatten層作用
一些其它層的作用參考 keras各種layer的作用及用法 簡要總結 concat層的功能 concat層實現輸入資料的拼接。concat層是乙個實用程式層,它將多個輸入blob連線到乙個輸出blob 按照給定的axis,注意除了規定的axis以外,被concat的輸入bolb的其他維度的size必...