2015-09-19 41 views
0

我試圖運行這個從(PhpMyAdimin)創建函數代碼米#1064 - 你在你的SQL語法錯誤,我所有最新SQL


CREATE FUNCTION `CAP_FIRST`(input VARCHAR(255)) RETURNS varchar(255) CHARSET latin1 
    DETERMINISTIC 
BEGIN 
    DECLARE len INT; 
    DECLARE i INT; 
    DECLARE charnum INT; 
    declare SortedName varchar(255); 

    SET len = CHAR_LENGTH(input); 
    SET input = LOWER(input); 
    SET i = 1; 
    set charnum = 1; 
    set SortedName = ''; 


    WHILE (i <= len) DO 
     if charnum = 1 then 
      set SortedName = concat(SortedName,upper(mid(input,i,1))); 
      set charnum = charnum + 1; 
     else 
      if mid(input,i,1) = ' ' then 
       set SortedName = concat(SortedName,' '); 
       set charnum = 1; 
      else 
       set SortedName = concat(SortedName,mid(input,i,1)); 
       set charnum = charnum + 1; 
      end if; 

     end if; 


     SET i = i + 1; 
    END WHILE; 

    RETURN SortedName; 
END 

我總是得到這個

#1064 - 你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本4行

回答

0

你可能只需要DELIMITER語句,你可以使用elseif,我會建議用substr()substring()更換mid()使用「」附近正確語法手冊:

DELIMITER $$ 

CREATE FUNCTION `CAP_FIRST`(input VARCHAR(255)) RETURNS varchar(255) CHARSET latin1 
    DETERMINISTIC 
BEGIN 
    DECLARE len INT; 
    DECLARE i INT; 
    DECLARE charnum INT; 
    declare SortedName varchar(255); 

    SET len = CHAR_LENGTH(input); 
    SET input = LOWER(input); 
    SET i = 1; 
    set charnum = 1; 
    set SortedName = ''; 

    WHILE (i <= len) DO 
     if charnum = 1 then 
      set SortedName = concat(SortedName, upper(substr(input,i,1))); 
      set charnum = charnum + 1; 
     elseif mid(input,i,1) = ' ' then 
      set SortedName = concat(SortedName,' '); 
      set charnum = 1; 
     else 
      set SortedName = concat(SortedName, substr(input,i,1)); 
      set charnum = charnum + 1; 
     end if; 
     SET i = i + 1; 
    END WHILE; 

    RETURN SortedName; 
END; 
$$ 
DELIMITER ; 
+0

#1064 - 您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,在第1行'DELIMITER'附近使用正確的語法。這是我現在得到的錯誤 –

+0

@MohamedTaher。 。 。奇怪的事情正在發生。 'DELIMITER'絕對可以接受MySQL語法(https://dev.mysql.com/doc/refman/5.6/en/stored-programs-defining.html)。 –

+0

是在phpmyadmin之前試過的嗎? –

相關問題