今天有点临时需求要计算一张表的结果,不想写代码,想到了mysql的自定义函数。碰到了很多问题,为了方便一下使用,在此记录一下。
需求:一张表中,有比分,需要查询出比赛id和比赛结果。
分析:
单表查询没啥的,困难就困难在怎么判断比分之后返回想要的结果。
这里我把比赛结果分别定义代号,1主场胜、2平局、3客场胜
函数逻辑:
接收两个参数,判断参数的大小,分别返回结果。
实现:
Navicat操作:
navicat for mysql 工具内--创建函数
这里分别是存储过程和函数,我们选择函数
设置参数,这里的参数是接收的参数,例如 count(id) 接收一个参数
下一步,设置返回类型
点击完成即可。会出现以下界面
现在开始在BEGIN ..END;;中间写逻辑,具体语法需要百度。
我这里主要是if...elseif..else的逻辑,代码如下:
保存--getMatchResult。如果语法有错误,保存会报错,根据提示信息去查找错误。
使用函数:
我这里为了方便,直接写了两个参数,结果跟预想一样。 第一个参数是主场分数,第二个参数是客场分数,3表示客场胜。
Mysql 创建函数
进入mysql shell,因为中间有很多分号,所以需要使用delimiter分界。该命令表示,把默认的分号执行改成其他符号执行。
这里使用demiter修改分解符为// ,如果还是使用分号分界则报错了。使用//分界执行后,显示正常。
创建函数(注意使用//分界)
使用函数
分号结尾没效果,必须要用// ,除非退出mysql shell重新登录。返回结果是我们需要的,第2个参数为客场。3表示客场胜。
到此简单试用完成,临时查询很方便。