剥离特定字符和HTML代码的功能

时间:2017-05-23 19:59:33

标签: mysql sql function loops delimiter

我找到并修改了一个函数,用于删除我在MySQL视图中使用的某些字符和HTML标记。

我能够使用MySQL工作台创建该函数,但由于某种原因,它不会从shell提示符的命令行'mysql'创建。它给出了分隔符的错误。当我们取出分隔符时,它似乎也不像LOOP或SET行。

有关为什么在一个地方而不是另一个地方工作的任何建议?另外,有没有更好的方法来编写这个函数?

DROP FUNCTION IF EXISTS `strip_tags`;
DELIMITER // 
CREATE FUNCTION `strip_tags`( $str TEXT ) RETURNS text
SQL SECURITY INVOKER
READS SQL DATA
DETERMINISTIC
BEGIN 
  DECLARE $start, $end INT DEFAULT 1;
  SET $str = COALESCE( $str, '' );
  LOOP 
    SET $str = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE($str,'®',''),'®',''),'™',''),'™',''),'è','è'),'&','&');
    SET $start = locate( "<", $str, $start ); 
    IF ( !$start ) THEN 
      RETURN $str;
    END IF;
    SET $end = locate( ">", $str, $start );
    IF ( !$end ) THEN 
      SET $end = $start;
    END IF;
    SET $str = 
            INSERT 
                   ( 
                $str, 
                $start, 
                $end - $start + 1, 
                "" 
                   );
  END LOOP;
END
// DELIMITER ;

0 个答案:

没有答案