воскресенье, 7 августа 2011 г.

Замена по регулярному выражению в MySQL

Вот так можно делать замену подстроки в строке по регулярному выражению в MySQL.

DELIMITER //

CREATE FUNCTION preg_replace(pattern varchar(10000), replacer varchar(10000), original varchar(10000))
RETURNS varchar(10000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(10000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
SET i = 1;
SET temp ='';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp, ch);
ELSE
SET temp = CONCAT(temp,replacer);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
RETURN temp;
END//

UPDATE news
SET content = preg_replace('\r+', ' ', content)//

1 комментарий: