Estou criando uma função para determinar se um certo caracter é ou não alfanumérico (não encontrei no mysql uma já pronta para isto).
Porém, quando vou consulta-lá após criada, vejo que o MySql fez uma zona com meus acentos (quando digito os comandos abaixo posso ver isto).
use mysql;
select body from proc;
Nesta consulta eu vejo o código fonte da função criada... mas os acentos viraram caracteres estranhos. :wacko:
O problema é que minha função é exatamente para comparação de caracteres, e ela está funcionando indevidamente por causa disto.
Segue abaixo a função:
DROP FUNCTION IF EXISTS alfa;
delimiter //
CREATE FUNCTION alfa (caracter varchar(1)) RETURNS tinyint(1)
BEGIN
declare result tinyint(1) default 0;
if caracter="0" or caracter="1" or caracter="2" or caracter="3" or caracter="4" or caracter="5" or caracter="6" or caracter="7" or caracter="8" or caracter="9" or caracter="a" or caracter="á" or caracter="â" or caracter="à" or caracter="ã" or caracter="ä" or caracter="A" or caracter="Á" or caracter="Â" or caracter="À" or caracter="Ã" or caracter="Ä" or caracter="e" or caracter="é" or caracter="è" or caracter="ê" or caracter="ë" or caracter="E" or caracter="É" or caracter="È" or caracter="Ê" or caracter="Ë" or caracter="i" or caracter="í" or caracter="ì" or caracter="î" or caracter="ï" or caracter="I" or caracter="Í" or caracter="Ì" or caracter="Ï" or caracter="o" or caracter="ó" or caracter="ò" or caracter="ô" or caracter="õ" or caracter="ö" or caracter="O" or caracter="Ó" or caracter="Ò" or caracter="Õ" or caracter="Ô" or caracter="Ö" or caracter="u" or caracter="ú" or caracter="ù" or caracter="û" or caracter="ü" or caracter="U" or caracter="Ú" or caracter="Ù" or caracter="Û" or caracter="Ü" or caracter="b" or caracter="c" or caracter="d" or caracter="f" or caracter="g" or caracter="h" or caracter="i" or caracter="j" or caracter="k" or caracter="l" or caracter="m" or caracter="n" or caracter="o" or caracter="p" or caracter="q" or caracter="r" or caracter="s" or caracter="t" or caracter="u" or caracter="w" or caracter="v" or caracter="x" or caracter="y" or caracter="z" or caracter="ÿ" or caracter="B" or caracter="C" or caracter="D" or caracter="F" or caracter="G" or caracter="H" or caracter="J" or caracter="K" or caracter="L" or caracter="M" or caracter="N" or caracter="P" or caracter="Q" or caracter="R" or caracter="S" or caracter="T" or caracter="W" or caracter="V" or caracter="X" or caracter="Y" or caracter="Z" or caracter="ç" or caracter="Ç" then
set result=1;
end if;
RETURN result;
END
//
delimiter;
Quando digito o comando abaixo, ele me retorna 1: :)
select alfa("a");
Mas, se digito isto, me retorna 0: :(
select alfa("á");
Obviamente, deveria retornar 1 para ambos os casos.
Eu tentei fazer o seguinte:
alter database test CHARACTER SET=latin1 COLLATE=latin1_general_ci;
Depois disto, saí do mysql, entrei novamente, dei drop e recriei a função. NADA FEITO.
Question
Anderson de Camargo
Preciso de um help.
Estou criando uma função para determinar se um certo caracter é ou não alfanumérico (não encontrei no mysql uma já pronta para isto).
Porém, quando vou consulta-lá após criada, vejo que o MySql fez uma zona com meus acentos (quando digito os comandos abaixo posso ver isto).
Nesta consulta eu vejo o código fonte da função criada... mas os acentos viraram caracteres estranhos. :wacko: O problema é que minha função é exatamente para comparação de caracteres, e ela está funcionando indevidamente por causa disto. Segue abaixo a função: Quando digito o comando abaixo, ele me retorna 1: :) Mas, se digito isto, me retorna 0: :( Obviamente, deveria retornar 1 para ambos os casos. Eu tentei fazer o seguinte:Depois disto, saí do mysql, entrei novamente, dei drop e recriei a função. NADA FEITO.
O que eu posso fazer??
Desde já agradeço a ajuda.
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.