mysql 乘法拼接字符串_【原创】利用MySQL 的GROUP_CONCAT函数实现聚合乘法
MySQL 聚合函數(shù)里面提供了加,平均數(shù),最小,最大等,但是沒有提供乘法,我們這里來利用MYSQL現(xiàn)有的GROUP_CONCAT函數(shù)實現(xiàn)聚合乘法。
先創(chuàng)建一張示例表:CREATE?TABLE?`tb_seq`?(
`num`?int(10)?NOT?NULL,
`seq_type`?enum('yellow','green','red')?NOT?NULL
)?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
插入示例數(shù)據(jù):insert??into?`tb_seq`(`num`,`seq_type`)
values?(4,'green'),(1,'red'),(3,'green'),
(1,'red'),(8,'red'),(4,'yellow'),
(8,'red'),(7,'yellow'),(10,'red'),
(1,'red'),(1,'red'),(1,'yellow'),
(5,'green'),(9,'red'),(1,'yellow'),
(6,'yellow');
創(chuàng)建基于逗號分隔符的字符串乘法,前提是字符串逗號分隔的都是數(shù)字。DELIMITER?$$
USE?`t_girl`$$
DROP?FUNCTION?IF?EXISTS?`func_multiple`$$
CREATE?DEFINER=`root`@`localhost`?FUNCTION?`func_multiple`(
f_nums?VARCHAR(1000)
)?RETURNS?DOUBLE(10,2)
BEGIN
--?Created?by?ytt?2014/10/21.
DECLARE?result?DOUBLE(10,2)?DEFAULT?1;
DECLARE?cnt,i?INT?DEFAULT?0;
SET?cnt?=?CHAR_LENGTH(f_nums)?-?CHAR_LENGTH(REPLACE(f_nums,',',''))?+?1;
WHILE?i?
DO
--?get?multiple?result.
SET?result?=?result?*?REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_nums,',',i+1)),',',1));
SET?i?=?i?+?1;
END?WHILE;
SET?result?=?ROUND(result,2);
RETURN?result;
END$$
DELIMITER?;
好了,我們利用我創(chuàng)建的函數(shù)以及MYSQL自帶的GROUP_CONCAT聚合函數(shù)就可以很方便的實現(xiàn)乘法了。SELECT?seq_type,func_multiple(GROUP_CONCAT(num?ORDER?BY?num?ASC?SEPARATOR?','))?AS?multiple_num?FROM?tb_seq?WHERE?1?GROUP?BY?seq_type;
+----------+--------------+
|?seq_type?|?multiple_num?|
+----------+--------------+
|?yellow???|???????168.00?|
|?green????|????????60.00?|
|?red??????|??????5760.00?|
+----------+--------------+
3?rows?in?set?(0.00?sec)
總結(jié)
以上是生活随笔為你收集整理的mysql 乘法拼接字符串_【原创】利用MySQL 的GROUP_CONCAT函数实现聚合乘法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythone 打开文件 一行_【精品资
- 下一篇: eclipse jdbc mysql下载