MySQL用户定义函数

6

我有一个含有几列的表格,比如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个回答

19
是的。
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接