MySQL用户定义的函数

时间:2013-09-04 16:08:10

标签: mysql user-defined-functions

我的表格包含几栏:column_1,column_2和column_3。

我在表格中添加了一个名为score的新列。我想要做的是根据这三列计算得分并轻松调整参数。

说我的分数公式如下:

score = a * column_1 + b * column_2 + c * column_3

可以创建一个udf或进程(之前从未使用过)来轻松实现吗?

所以我有一个像getScore(a,b,c)这样的函数 我可以做类似的事情:

select 
    column_1,
    column_2, 
    column_3, 
    getScore(0.5, 0.1, 0.4) as score
from table

update table set score = getScore(0.5, 0.1, 0.4)

谢谢!

1 个答案:

答案 0 :(得分:11)

CREATE FUNCTION `getScore`(`a` DECIMAL(12,4), `b` DECIMAL(12,4), `c` DECIMAL(12,4)) RETURNS DECIMAL(12,4)
BEGIN
    RETURN a + b + c;
END

SELECT getScore(0.3, 0.4, 0.5)
-> 1.2000

但是如果您需要表中的某些值,则还需要将它们作为参数包含在内。

SELECT getScore(column1, column2, column3, 0.5, 0.1, 0.4) AS score FROM table