我想创建一个这样的函数:
CREATE FUNCTION fn_geturlparam (param varchar(55), url varchar(2048)) RETURNS varchar(2048) CHARSET utf8 COLLATE utf8_general_ci
BEGIN
DECLARE val VARCHAR(2048);
DECLARE _param VARCHAR(60) DEFAULT CONCAT(param,'=');
SELECT
CASE
WHEN locate(concat('&',_param), url) > 0
THEN right(url, length(url) - (locate(concat('&',_param),url)+length(concat('&',_param))-1))
WHEN locate(concat('?',_param), url) > 0
THEN right(url, length(url) - (locate(concat('?',_param),url)+length(concat('?',_param))-1))
WHEN locate(concat('#',_param), url) > 0
THEN right(url, length(url) - (locate(concat('#',_param),url)+length(concat('#',_param))-1))
WHEN locate(_param,url) > 0
THEN right(url, length(url) - (locate(_param,url)+length(_param)-1) )
ELSE null
END
INTO val;
SET val = replace(replace(left(val, locate('&',concat(val,'&'))-1),'%20',' '),'+',' ');
RETURN val;
END
我尝试了一切,但没有运气。我正在使用MySQL 5.5.15
这是错误:
#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在第3行
答案 0 :(得分:0)
您需要提供delimiter
,还需要使用end
关闭;
delimiter //
CREATE FUNCTION fn_geturlparam (param varchar(55), url varchar(2048)) RETURNS varchar(2048) CHARSET utf8 COLLATE utf8_general_ci
BEGIN
DECLARE val VARCHAR(2048);
DECLARE _param VARCHAR(60) DEFAULT CONCAT(param,'=');
select
case
when locate(concat('&',_param), url) > 0
then right(url, length(url) - (locate(concat('&',_param),url)+length(concat('&',_param))-1))
when locate(concat('?',_param), url) > 0
then right(url, length(url) - (locate(concat('?',_param),url)+length(concat('?',_param))-1))
when locate(concat('#',_param), url) > 0
then right(url, length(url) - (locate(concat('#',_param),url)+length(concat('#',_param))-1))
when locate(_param,url) > 0
then right(url, length(url) - (locate(_param,url)+length(_param)-1) )
else null
end
into val;
set val = replace(replace(left(val, locate('&',concat(val,'&'))-1),'%20',' '),'+',' ');
RETURN val;
END;//
delimiter ;