我找到并修改了一个函数,用于删除我在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 ;