DELIMITER ;
DROP FUNCTIONIF EXISTS urlencode;
DELIMITER |
CREATE FUNCTION urlencode (s VARCHAR(4096)) RETURNS VARCHAR(4096)
DETERMINISTIC
CONTAINS SQL
BEGIN
DECLARE c VARCHAR(4096) DEFAULT'';DECLARE pointer INT DEFAULT1;
DECLARE s2 VARCHAR(4096) DEFAULT'';IF ISNULL(s) THENRETURN NULL;
ELSESET s2 = '';WHILE pointer <= length(s) DOSET c = MID(s,pointer,1);
IF c = ' ' THENSET c = '+';ELSEIFNOT (ASCII(c) BETWEEN 48AND57OR
ASCII(c) BETWEEN 65AND90OR
ASCII(c) BETWEEN 97AND122) THENSET c = concat("%",LPAD(CONV(ASCII(c),10,16),2,0));
ENDIF;
SET s2 = CONCAT(s2,c);
SET pointer = pointer + 1;
ENDwhile;
ENDIF;
RETURN s2;
END;
|
DELIMITER ;
urldecode函数
DELIMITER ;
DROP FUNCTIONIFEXISTSurldecode;
DELIMITER |
CREATEFUNCTIONurldecode(s VARCHAR(4096)) RETURNSVARCHAR(4096)DETERMINISTICCONTAINSSQLBEGINDECLAREcVARCHAR(4096)DEFAULT '';
DECLARE pointer INT DEFAULT1;
DECLARE h CHAR(2);
DECLARE h1 CHAR(1);
DECLARE h2 CHAR(1);
DECLARE s2 VARCHAR(4096) DEFAULT'';
IF ISNULL(s) THEN
RETURN NULL;
ELSESET s2 = '';
WHILE pointer <= LENGTH(s) DOSET c = MID(s,pointer,1);
IF c = '+'THENSET c = ' ';
ELSEIF c = '%'AND pointer + 2 <= LENGTH(s) THENSET h1 = LOWER(MID(s,pointer+1,1));
SET h2 = LOWER(MID(s,pointer+2,1));
IF (h1 BETWEEN '0'AND'9'OR h1 BETWEEN 'a'AND'f')
AND
(h2 BETWEEN '0'AND'9'OR h2 BETWEEN 'a'AND'f')
THENSET h = CONCAT(h1,h2);
SET pointer = pointer + 2;
SET c = CHAR(CONV(h,16,10));
ENDIF;
ENDIF;
SET s2 = CONCAT(s2,c);
SET pointer = pointer + 1;
ENDwhile;
ENDIF;
RETURN s2;
END;
|
DELIMITER ;
multiurldecode 函数
DELIMITER ;
DROP FUNCTION IFEXISTS multiurldecode;
DELIMITER |
CREATE FUNCTION multiurldecode (s VARCHAR(4096)) RETURNS VARCHAR(4096)
DETERMINISTIC
CONTAINS SQLBEGINDECLARE pr VARCHAR(4096) DEFAULT'';
IF ISNULL(s) THEN
RETURN NULL;
ENDIF;
REPEAT
SET pr = s;SELECT urldecode(s) INTO s;
UNTIL pr = s END REPEAT;
RETURN s;
END;
|
DELIMITER ;
urlencode 函数DELIMITER ;DROP FUNCTION IF EXISTS urlencode;DELIMITER |CREATE FUNCTION urlencode (s VARCHAR(4096)) RETURNS VARCHAR(4096)DETERMINISTIC CONTAINS SQL BEGIN DECLARE c VARC