mysql - 如何运行 mySQL 函数来更新所有行?

标签 mysql sql sql-update sql-function

我试图通过 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>');

但是我无法找到,如何使用这个函数来更新所有记录。例如我在 myTableAddress 列中有记录,我想使用上述函数从中删除 HTML 标签。 如何借助提到的函数直接更新 Address 列的所有记录,或者如果无法直接更新,则可以通过任何方式将所有更新的记录插入到表 Address_Stripped?

P.S.,我知道,我的问题没有做任何研究来自己得到答案,但这只是因为我不知道如何搜索它。

最佳答案

你只需要在update语句中调用这个函数:

UPDATE mytable
SET    address = fnStripTags(address)

关于mysql - 如何运行 mySQL 函数来更新所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31958661/

相关文章:

sql - 如何从 SQL 转储中删除表前缀?

java - 将提取大小设置为负数

MySQL 更新更新的行数超出应有的行数

mysql - SQL查询根据两个不同表的条件更新一个表的列值

php - MySQL 一次更新多个表

MySQL 重复事件未执行

Mysql-获取同一个表中行的交集

mysql - SAS proc sql 更新表,包含计数和最大值

sql - Rails - 在哪里存储包含进入数据库的数据的 sql 文件

sql - 在 PL/SQL 中创建临时表