2015-04-06 34 views
1

運行功能,當我成功地在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 – 

非常感謝你的幫助

回答

1

你有兩個問題。首先CHARINDEX()函數不是內置的MySQL函數。除非你在你的數據庫的某處定製了它,否則你會在這裏遇到錯誤。 LOCATE()是內置的MySQL函數,其功能類似於CHARINDEX()

你的第二個問題是你調用函數的方式。你應該以這種方式

SELECT h2m (description) 
FROM oc_product_description 
+0

你所提到的一切都像魅力一樣,你能給我一個命令來執行我存儲的功能嗎?我現在的命令只選擇它們。這個函數假設通過消除html標籤來搜索description列並將html代碼轉換爲文本。 – Schwann 2015-04-06 01:22:47

+0

@斯旺恩我不知道我理解你的問題。您現在的命令已經在搜索並轉換您的HTML – 2015-04-06 14:22:51

+0

@Liyod,我確實使用了該命令,但它沒有更新並更改列,只是選中並給了我一個列表。 – Schwann 2015-04-06 17:59:16

1

你可以試試:

SELECT description, h2m(HTMLText) 
FROM oc_product_description 

三件事:description

  • 逗號。
  • 刪除h2m(之間的空格。 MySQL在函數名稱後面有一個空格問題。
  • 刪除逗號後oc_product_description

編輯:

也許你想傳遞description在作爲參數:

SELECT h2m(description) 
FROM oc_product_description 
+0

謝謝@Gordon Linoff來調用它,我跑你的,它給了我未知列的htmlText錯誤 – Schwann 2015-04-06 00:45:04

+0

現在它說,命令不同步,你現在不能運行這個命令! – Schwann 2015-04-06 00:47:57