我在mysql中成功创建了以下函数
CREATE FUNCTION h2m
HTMLText(text)
RETURNS text
DETERMINISTIC
BEGIN
DECLARE Start INT;
DECLARE End INT;
DECLARE Length INT;
SET Start = CHARINDEX('<',HTMLText);
SET End = CHARINDEX('>',HTMLText,CHARINDEX('<',HTMLText));
SET Length = (End - Start) + 1;
WHILE Start > 0
AND End > 0
AND Length > 0
DO
SET HTMLText = STUFF(HTMLText,Start,Length,'');
SET Start = CHARINDEX('<',HTMLText);
SET End = CHARINDEX('>',HTMLText,CHARINDEX('<',HTMLText));
SET Length = (End - Start) + 1;
END WHILE;
RETURN LTRIM(RTRIM(HTMLText));
END;
现在,当我尝试使用以下代码调用它时:
SELECT description h2m (HTMLText) FROM oc_product_description,
我收到以下错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use in '(HTML Text) FROM oc product_description LIMIT 0, 30' at line 2 –
非常感谢你的帮助
答案 0 :(得分:1)
您可以尝试:
SELECT description, h2m(HTMLText)
FROM oc_product_description
三件事:
description
之后的逗号。h2m
和(
之间的空格。 MySQL在函数名后面有空格问题。oc_product_description
之后删除逗号。编辑:
也许您想将description
作为参数传递:
SELECT h2m(description)
FROM oc_product_description
答案 1 :(得分:1)
你有两个问题。首先,CHARINDEX()
函数不是内置的MySQL函数。除非您在数据库中的某个位置定制了自定义,否则您将在此处遇到错误。 LOCATE()
是内置的MySQL函数,它执行与CHARINDEX()
类似的操作。
您的第二个问题是您调用该功能的方式。你应该以这种方式称呼它
SELECT h2m (description)
FROM oc_product_description