【发布时间】:2015-11-04 16:12:59
【问题描述】:
我正在尝试直接通过 MySQL 从我的所有记录中删除 HTML 标记。感谢 StackOverflow 的 this question,我找到了以下函数,这种函数确实会去除 html 标签 -
SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS fnStripTags;
DELIMITER |
CREATE FUNCTION fnStripTags( Dirty varchar(4000) )
RETURNS varchar(4000)
DETERMINISTIC
BEGIN
DECLARE iStart, iEnd, iLength int;
WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO
BEGIN
SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty ));
SET iLength = ( iEnd - iStart) + 1;
IF iLength > 0 THEN
BEGIN
SET Dirty = Insert( Dirty, iStart, iLength, '');
END;
END IF;
END;
END WHILE;
RETURN Dirty;
END;
|
DELIMITER ;
SELECT fnStripTags('this <html>is <b>a test</b>, nothing more</html>');
但我无法找到,如何使用此功能更新所有记录。例如我在myTable 的Address 列中有记录,我想使用上述函数从中删除 HTML 标签。 如何在上述函数的帮助下直接更新Address 列的所有记录,或者如果无法直接更新,那么有什么方法可以将所有更新的记录插入到表Address_Stripped 的第二列中?
P.S.,我知道,我的问题没有自己做任何研究来得到答案,但这仅仅是因为我不知道如何搜索它。
【问题讨论】:
标签: mysql sql sql-update sql-function