Mysql函数编码

时间:2016-09-22 16:43:16

标签: mysql function

美好的一天, 所以我一直在尝试编写我的这个函数,它允许我检查和减去然后使用if函数连接一些数据。 我一直在尝试从互联网上反复阅读示例语法,但我似乎无法找到我的代码有什么问题!

继承人我做了什么:

DELIMITER $$

USE `db`$$

DROP FUNCTION IF EXISTS `convertToRelatives`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `BaseConverter`(n INT) RETURNS VARCHAR(100) CHARSET latin1
BEGIN
  DECLARE s VARCHAR (100);

  IF n - 32 >= 0
  THEN SET s = 'Father'
  AND n = n - 32;
  IF n - 16 >= 0
  THEN SET s = CONCAT(s, ', ', 'Mother')
  AND n = n - 16;  

  END IF;
  RETURN s;
END$$

DELIMITER ; 

我得到了这个错误:

错误代码:1064 您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在第13行

所以..到底出了什么问题?

我要做的是:

使用函数获取输入数字并返回连接的字符串。

我的公式是:

if n-32 >=0 then s = 'father'
if n-16 >=0 then s = CONCAT(s,',','Mother')
if n-8 >=0 then s = CONCAT(s,',','Brother')
if n-4 >=0 then s = CONCAT(s,',','Sister')
if n-2 >=0 then s = CONCAT(s,',','Others')

帮助?

1 个答案:

答案 0 :(得分:0)

导致此问题的AND n = n - 32;。它应该是

  IF n - 32 >= 0 THEN 
  BEGIN
  SET s = 'Father';
  SET n = n - 32;
  END;
 ELSEIF n - 16 >= 0 THEN 
 BEGIN
  SET s = CONCAT(s, ', ', 'Mother');
  SET n = n - 16;  
 END;
 END IF;