Mysql函数编码

标签 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')

帮忙?

最佳答案

导致问题的 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;

关于Mysql函数编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39644588/

相关文章:

php - 将多条记录插入 mysql 和 mysql_affected_rows()

mysql - 用于提取仅链接到已关闭缺陷的测试用例的 QC 查询

php - 如果 Count 为零,如何在 Laravel 中获取记录

mysql - 导入 XML (CDATA)

c# - 在 C# 中内联使用返回多个值的函数

javascript - 在js/jquery中动态添加ID

javascript - 模块中定义的 js 函数可以在模块外部访问吗?

c++ - Editreturn 我不太明白这里问的递归函数的概念 (c++)

mysql - 认识laravel的关系

python - 在 Python 中传递参数化函数句柄