- CONCAT()
- CONCAT_WS()
- GROUP_CONCAT()
一、CONCAT() : 最常用的字符串拼接方法,但遇到拼接中的字符串出现null的情况会返回null 语法:CONCAT(string1,string2) DEMO1
mysql > SELECT CONCAT(s_name,s_sex) FROM student +----------------------+ CONCAT(s_name,s_sex) +----------------------+ 张三男 赵四男 王五男 null
二、CONCAT_WS():concat with separator
比CONCAT的优点
多了个分隔符功能
如果某个字符串为null,会忽略null,并返回其他字符串的值
语法:CONCAT_WS(separator,str1,str2,…)
代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数
DEMO2
mysql > SELECT CONCAT_WS('--',s_name,s_sex) FROM student +-------------------------------+ CONCAT_WS('--',s_name,s_sex) +-------------------------------+ 张三--男 赵四--男 王五--男 赵六
三、GROUP_CONCAT()
连接字段,多个值显示为一行
语法 :group_concat( [DISTINCT] 连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
连接的可以是多个字段,也可以对连接字段进行排序
DEMO3:
————————————————
mysql > SELECT GROUP_CONCAT(s_id) FROM student +--------------------------------------------+ GROUP_CONCAT(s_id) +--------------------------------------------+ 01,02,03 ————————————————
DEMO4:连接多个字段,并以其中一个字段排序
mysql > SELECT GROUP_CONCAT(s_id,s_name order by s_id desc) FROM student +--------------------------------------------+ GROUP_CONCAT(s_id,s_name order by s_id desc) +--------------------------------------------+ 03王五,02赵四,01张三 ————————————————
$shipment_list = $model_order->table('edit_shipment')->where(array('order_id' => array('in', $dataKeys)))->field('order_id,GROUP_CONCAT(shipping_code) as concat')->group('order_id')->select();
$shipment_list = array_column($shipment_list,null,'order_id');
最中结果
Array ( [463557025] => Array ( [order_id] => 463557025 [concat] => 858585TTTUJ ) [463557026] => Array ( [order_id] => 463557026 [concat] => 22222222,333333333yt,666666yt ) )