解决创建用于解析字符串的 mySQL 函数的问题
trouble shoot a creating a mySQL function for parsing a string
我在尝试创建 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
好像少了一些分号,请这样试试:
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
我在尝试创建 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
好像少了一些分号,请这样试试:
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