0

我在尝试创建 mySQL 函数来解析字符串时遇到语法错误。考虑到我有更多使用 SQL 创建 FN 的经验,而不是 MySQL,我可能没有意识到这很简单。

这是我的功能:

CREATE FUNCTION fn_parse_string (string1 varchar(2048),datapoint1 varchar(20),delimiter1 

varchar(1)) 
RETURNS varchar(60) DETERMINISTIC

BEGIN
    DECLARE datareturn1 VARCHAR(60)
    
    IF INSTR(string1, datapoint1) > 0 
        THEN 
            SET datareturn1 = SUBSTRING_INDEX(SUBSTRING(string1,
                                                        INSTR(string1, datapoint1) + LENGTH(datapoint1),
                                                        LENGTH(string1)),
                                                delimiter1,
                                                1)
    ELSEIF IFNULL(datapoint1,'') = '' 
        THEN 
            SET datareturn1 = 'Blank Field'
    ELSE SET datareturn1 = 'N/A'
    END IF;


RETURN (datareturn1);
END
4

1 回答 1

0

好像少了一些分号,请这样试试:

CREATE FUNCTION fn_parse_string (string1 varchar(2048),datapoint1 varchar(20),delimiter1 

varchar(1)) 
RETURNS varchar(60) DETERMINISTIC

BEGIN
    DECLARE datareturn1 VARCHAR(60);
    
    IF INSTR(string1, datapoint1) > 0 
        THEN 
            SET datareturn1 = SUBSTRING_INDEX(SUBSTRING(string1,
                                                        INSTR(string1, datapoint1) + LENGTH(datapoint1),
                                                        LENGTH(string1)),
                                                delimiter,
                                                1);
    ELSEIF IFNULL(datapoint1,'') = '' 
        THEN 
            SET datareturn1 = 'Blank Field';

    ELSE SET datareturn1 = 'N/A';
    END IF;


RETURN (datareturn1);
END
于 2021-06-02T16:15:14.660 回答