DELIMITER ||
DROP FUNCTION IF EXISTS GET_DATA||
CREATE FUNCTION GET_DATA( _data LONGTEXT, _begin LONGTEXT, _end LONGTEXT) RETURNS LONGTEXT
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA
BEGIN
DECLARE _startPos INT UNSIGNED;
DECLARE _endPos INT UNSIGNED;
SET _startPos = LOCATE(_begin, _data, 1);
IF _startPos < 1 THEN RETURN NULL; END IF;
SET _startPos = _startPos + LENGTH(_begin);
SET _endPos = LOCATE(_end, _data, _startPos);
RETURN SUBSTRING(_data,_startPos,_endPos - _startPos);
END;
||
DELIMITER ;
# SELECT GET_DATA( `message` , '' )
# FROM `mybb_posts`
# WHERE GET_DATA( `message` , '' ) IS NOT NULL
# LIMIT 0,5077;
DELIMITER ||
DROP FUNCTION IF EXISTS PHPBB3_TO_MYBB_URLS||
CREATE FUNCTION PHPBB3_TO_MYBB_URLS( x longtext) RETURNS longtext
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA
BEGIN
DECLARE _linkURL VARCHAR(500);
DECLARE _linkText VARCHAR(500);
DECLARE _begin VARCHAR(500);
DECLARE _middle VARCHAR(500);
DECLARE _end VARCHAR(500);
DECLARE _startPos INT UNSIGNED;
DECLARE _endPos INT UNSIGNED;
SET _begin = '';
SET _end = '';
LOOP
SET _linkURL = GET_DATA(x,_begin,_middle);
IF (_linkURL IS NULL) THEN RETURN x; END IF;
SET _linkText = GET_DATA(x,CONCAT(_linkURL,_middle),_end);
SET x = REPLACE(x,CONCAT(_begin,_linkURL,_middle,_linkText,_end),CONCAT('[url=',_linkURL,']',_linkText,'[/url]'));
SET _linkURL = GET_DATA(x,_begin,_middle);
END LOOP;
RETURN x;
END;
||
DELIMITER ;
# UPDATE `mybb_posts` SET `message` = PHPBB3_TO_MYBB_URLS(`message`);