无法创建存储函数

问题描述 投票:0回答:1

当我尝试运行此代码时:

DELIMITER $$

create function formatJJhhMMssToSuffixes(duree varchar(100))
returns varchar(100)
begin
    DECLARE
        hhmmss VARCHAR(100);
    if duree = '' then
        return '';
  else if cast(substring_index(duree, ':', 1) as int) = 0 then
        set hhmmss = substring_index(duree, ':', -3);
        return concat(substring_index(hhmmss, ':', 1), 'h ', substring(hhmmss, 4, 2), 'm ', substring_index(hhmmss, ':', -1), 's');
    else
        return concat(substring_index(duree, ':', 1), 'jours ', substring(duree, 4, 2), 'h ', substring(duree, 7, 2), 'm ', substring_index(duree, ':', -1), 's');
    end IF;
end $$

DELIMITER ;

然后我收到错误消息:

[SQL] 

create function formatJJhhMMssToSuffixes(duree varchar(100))
returns varchar(100)
begin
    DECLARE
        hhmmss VARCHAR(100);
    if duree = '' then
        return '';
  else if cast(substring_index(duree, ':', 1) as int) = 0 then
        set hhmmss = substring_index(duree, ':', -3);
        return concat(substring_index(hhmmss, ':', 1), 'h ', substring(hhmmss, 4, 2), 'm ', substring_index(hhmmss, ':', -1), 's');
    else
        return concat(substring_index(duree, ':', 1), 'jours ', substring(duree, 4, 2), 'h ', substring(duree, 7, 2), 'm ', substring_index(duree, ':', -1), 's');
    end IF;
end $$

DELIMITER ;

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int) = 0 then
        set hhmmss = substring_index(duree, ':', -3);
        re' at line 5

我的代码有什么问题?

mysql
1个回答
0
投票

[CAST使用者有选项INT,请尝试SIGNED,]]

在此处查找各种CAST选项https://www.w3schools.com/sql/func_mysql_cast.asp

编辑了您的代码,请尝试此

create function formatJJhhMMssToSuffixes(duree varchar(100))
returns varchar(100)
begin
    DECLARE
        hhmmss VARCHAR(100);
    if duree = '' then
        return '';
    else if cast(substring_index(duree, ':', 1) as signed) = 0 then
        set hhmmss = substring_index(duree, ':', -3);
        return concat(substring_index(hhmmss, ':', 1), 'h ', substring(hhmmss, 4, 2), 'm ', substring_index(hhmmss, ':', -1), 's');
    else
        return concat(substring_index(duree, ':', 1), 'jours ', substring(duree, 4, 2), 'h ', substring(duree, 7, 2), 'm ', substring_index(duree, ':', -1), 's');
    end IF;
end $$
© www.soinside.com 2019 - 2024. All rights reserved.