重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
view sourceprint?
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了邗江免费建站欢迎大家使用!
01.
DELIMITER ;
02.
03.
DROP FUNCTION IF EXISTS urlencode;
04.
05.
DELIMITER |
06.
07.
CREATE FUNCTION urlencode (s VARCHAR(4096)) RETURNS VARCHAR(4096)08.
DETERMINISTIC
09.
CONTAINS SQL
10.
BEGIN
11.
DECLARE c VARCHAR(4096) DEFAULT '';
12.
DECLARE pointer INT DEFAULT 1;
13.
DECLARE s2 VARCHAR(4096) DEFAULT '';
14.
15.
IF ISNULL(s) THEN
16.
RETURN NULL;
17.
ELSE
18.
SET s2 = '';
19.
WHILE pointer = length(s) DO
20.
SET c = MID(s,pointer,1);
21.
IF c = ' ' THEN
22.
SET c = '+';
23.
ELSEIF NOT (ASCII(c) BETWEEN 48 AND 57 OR24.
ASCII(c) BETWEEN 65 AND 90 OR
25.
ASCII(c) BETWEEN 97 AND 122) THEN
26.
SET c = concat("%",LPAD(CONV(ASCII(c),10,16),2,0));27.
END IF;
28.
SET s2 = CONCAT(s2,c);
29.
SET pointer = pointer + 1;
30.
END while;
31.
END IF;
32.
RETURN s2;
33.
END;
34.
|
35.
DELIMITER ;
view sourceprint?
01.
DROP FUNCTION IF EXISTS urldecode;
02.
03.
DELIMITER |
04.
05.
CREATE FUNCTION urldecode (s VARCHAR(4096)) RETURNS VARCHAR(4096)06.
DETERMINISTIC
07.
CONTAINS SQL
08.
BEGIN
09.
DECLARE c VARCHAR(4096) DEFAULT '';
10.
DECLARE pointer INT DEFAULT 1;
11.
DECLARE h CHAR(2);
12.
DECLARE h1 CHAR(1);
13.
DECLARE h2 CHAR(1);
14.
DECLARE s2 VARCHAR(4096) DEFAULT '';
15.
16.
IF ISNULL(s) THEN
17.
RETURN NULL;
18.
ELSE
19.
SET s2 = '';
20.
WHILE pointer = LENGTH(s) DO
21.
SET c = MID(s,pointer,1);
22.
IF c = '+' THEN
23.
SET c = ' ';
24.
ELSEIF c = '%' AND pointer + 2 = LENGTH(s) THEN25.
SET h1 = LOWER(MID(s,pointer+1,1));
26.
SET h2 = LOWER(MID(s,pointer+2,1));
27.
IF (h1 BETWEEN '0' AND '9' OR h1 BETWEEN 'a' AND 'f')28.
AND
29.
(h2 BETWEEN '0' AND '9' OR h2 BETWEEN 'a' AND 'f')30.
THEN
31.
SET h = CONCAT(h1,h2);
32.
SET pointer = pointer + 2;
33.
SET c = CHAR(CONV(h,16,10));
34.
END IF;
35.
END IF;
36.
SET s2 = CONCAT(s2,c);
37.
SET pointer = pointer + 1;
38.
END while;
39.
END IF;
40.
RETURN s2;
41.
END;
42.
43.
|
44.
45.
DELIMITER ;
当一个字符串经过多次 urlencode 处理之后,可以使用 multiurldecode来解码,它将多次调用 urldecode来解码,直到没有需要解码的字符
view sourceprint?
01.
DELIMITER ;
02.
03.
DROP FUNCTION IF EXISTS multiurldecode;
04.
05.
DELIMITER |
06.
07.
CREATE FUNCTION multiurldecode (s VARCHAR(4096)) RETURNS VARCHAR(4096)08.
DETERMINISTIC
09.
CONTAINS SQL
10.
BEGIN
11.
DECLARE pr VARCHAR(4096) DEFAULT '';
12.
IF ISNULL(s) THEN
13.
RETURN NULL;
14.
END IF;
15.
REPEAT
16.
SET pr = s;
17.
SELECT urldecode(s) INTO s;
18.
UNTIL pr = s END REPEAT;
19.
RETURN s;
20.
END;
21.
22.
|
23.
24.
DELIMITER ;
这个要看你具体的记录是创建日期的格式是人什么样的,假如,你的记录的是 unix 时间戳,
SELECT * FROM t WHERE (unix_timestamp(NOW()) - create_time) 300;
可以直接精确查询:
select * from test where name ='%a' -------------查询name为 %a的数据
模糊查询 select * from test where name like '%\%a%'; -----------模糊查询name中包含 %a的数据