CONCAT & CONCAT_WS & GROUP_CONCAT

1、CONCAT:用来连接字段,或者字符。
但是只要被连接的字段中有一个值为null,则concat得到的就是null。
   concat(A,B),如果B为null,那么concat(A,B)=null
 
2、CONCAT_WS:用来连接字段,或者字符。
想要的是这样的:
连接A,B,如果B为null,那么连接后应该是A。
这时可用
   CONCAT_WS(separator, str1, str2,…)
 
3、GROUP_CONCAT:用来合并行
SELECT orderId, GROUP_CONCAT( cast( productId AS char ) SEPARATOR '|' ) AS productId
FROM `orderline`
WHERE 1
GROUP BY orderId
LIMIT 0 , 30
 
orderIdproductId
1 1|2
2 3|4|5

 
注意:合并的列是int型的,合并出来提示[BLOB - 7 B]或者[BLOB - 7 字节],
所以一定要转换成char再拼起来
综上:最后我要实现的是具有相同orderId的 产品的ID(或name)*产品的数量用‘|’分隔,显示在同一单元格中
SELECT orderId, GROUP_CONCAT( concat_ws( '*', cast( productId AS char ) , cast( quantity AS char ) )
SEPARATOR '|' ) AS productId
FROM `orderline`
WHERE 1
GROUP BY orderId
LIMIT 0 , 30

posted @ 2012-10-08 21:55  苏梳  阅读(283)  评论(0)    收藏  举报