A stored function to remove diacritics and other chars
Posted by:
Marc Elbet
Date: December 10, 2015 08:45AM
Hi,
I tried to write the following function to get rid of diacritics and other special characters.
It looks OK but it is rejected whatever changes I make to the syntax.
I use phpMyAdmin as the interface.
Any help will be much appreciated to tell me what is wrong in my code.
The last part with the IF and WHILE loops may be redundant but it is not what generates the issue.
HERE IT IS ....
CREATE FUNCTION No_fancy_char ( String_in VARCHAR(90) ) RETURNS VARCHAR(90)
DECLARE @i int
DECLARE @String_in VARCHAR(90)
DECLARE @String_out VARCHAR(90)
SET @i=1
SET @String_out=''
SET @String_in = LOWER(String_in);
SET @String_in = REPLACE(@String_in,' ', '')
SET @String_in = REPLACE(@String_in,'à', 'a')
SET @String_in = REPLACE(@String_in,'â', 'a')
SET @String_in = REPLACE(@String_in,'è', 'e')
SET @String_in = REPLACE(@String_in,'é', 'e')
SET @String_in = REPLACE(@String_in,'ë', 'e')
SET @String_in = REPLACE(@String_in,'ì', 'i')
SET @String_in = REPLACE(@String_in,'î', 'i')
SET @String_in = REPLACE(@String_in,'ï', 'i')
SET @String_in = REPLACE(@String_in,'ò', 'o')
SET @String_in = REPLACE(@String_in,'ù', 'u')
SET @String_in = REPLACE(@String_in,'û', 'u')
SET @String_in = REPLACE(@String_in,'ç', 'c')
SET @String_in = REPLACE(@String_in,'$', '')
SET @String_in = REPLACE(@String_in,'£', '')
SET @String_in = REPLACE(@String_in,'€', '')
SET @String_in = REPLACE(@String_in,'''', '')
SET @String_in = REPLACE(@String_in,'"', '')
SET @String_in = REPLACE(@String_in,':', '')
SET @String_in = REPLACE(@String_in,'`', '')
SET @String_in = REPLACE(@String_in,'-', '')
SET @String_in = REPLACE(@String_in,'+', '')
SET @String_in = REPLACE(@String_in,'(', '')
SET @String_in = REPLACE(@String_in,')', '')
SET @String_in = REPLACE(@String_in,'?', '')
SET @String_in = REPLACE(@String_in,'!', '')
SET @String_in = REPLACE(@String_in,'#', '')
WHILE @i <= Len(@String_in)
BEGIN
IF SUBSTRING(@String_in, @i, 1) LIKE '[a-Z]'
BEGIN
SET @String_out = @String_out + SUBSTRING(@String_in, @i, 1)
END
SET @i = @i + 1
END
RETURN @String_out
END
AND HERE IS THE MESSAGE I GET
#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 near 'DECLARE @i INT
DECLARE @String_in VARCHAR(90)
DECLARE @String_out VARCHAR(' at line 2
Thanks a lot.
Marc.