簡體   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