繁体   English   中英

在MySQL中运行函数时出错

[英]Error when Running a function in MySQL

我在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 –

非常感谢你的帮助

你可以试试:

SELECT description, h2m(HTMLText)
FROM oc_product_description

三件事:

  • description后用逗号description
  • 删除h2m( 。之间的h2m 。MySQL在函数名称后h2m空格。
  • 删除oc_product_description之后的逗号。

编辑:

也许您想将description作为参数传递:

SELECT h2m(description)
FROM oc_product_description

你有两个问题。 首先, CHARINDEX()函数不是内置的MySQL函数。 除非您在数据库的某个位置自定义定义,否则在这里会遇到错误。 LOCATE()是内置的MySQL函数,其功能与CHARINDEX()相似。

第二个问题是调用函数的方式。 你应该这样称呼它

SELECT h2m (description) 
FROM oc_product_description

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM