[firebase-br] Uso de Character sets com UPPER

Gladiston Santana gladiston em vidy.com.br
Qua Nov 28 14:09:40 -03 2012


Se tiver que mudar o database inteiro use o método backup/restore. A
ferramenta de backup tem como especificar o charset de destino tanto do
metadados quanto os dados e si. Mas assim como você está fazendo, isso não
converte o charset, apenas muda-o sem fazer nenhuma transliteração
equivalente, o resultado já é conhecido, o que for ascii (ou cp437)
praticamente não perde nada, o que iso8851->utf8 também não, mas qualquer
outro charset para iso8851 pode perder bastante.

O pior de tudo é que transliterar caracterest para outro equivalente ou
igual é uma necessidade corriqueira, e praticamente não há aplicações para
facilitar isso.
Muito tempo atras, precisei dum software assim porque o banco de dados (não
era firebird) usava cp860 (MSDOS em pt_BR) e não achei nada que pudesse
facilitar a minha vida. Tive que testar as palavras acentuadas com
maior incidência de erros na transliteração e criar uma função que usasse
um dicionário de palavras para trocar 'ac??oes' para 'ações', por exemplo.
Foi dureza, e isso só resolveu uns 80% da base.

[]´s e boa sorte.


Gladiston Santana
Departamento de TI
Grupo Vidy
Tel (11) 4787-3122 ramal 228
Rod. Régis Bittencourt 3360 - Km 272,5
Taboão da Serra - SP - CEP: 06793-000
Visite nosso site: www.vidy.com.br
Visite também : www.expolabor.com.br





Em 27 de novembro de 2012 18:05, André Conrado <acf em andreconrado.net>escreveu:

> Ok Gladiston!
>
> Eu realmente preciso mudar a tabela de caracteres. O CHARACTER é informado
> antes e o COLLATE depois, de acordo com a documentação do FIREBIRD. Só que
> realmente não funciona se informo apena o campo, entretanto, passando uma
> expressão funciona.
>
> Estou usando o FB 2.5.1, mas em versão anteriores tb ocorre. Faça um
> pequeno teste.
>
> Abs
>
> Em 27 de novembro de 2012 16:52, Gladiston Santana
> <gladiston em vidy.com.br>escreveu:
>
> > Não conheço esta forma de sintaxe, mas se você pretende aplicar um
> collate
> > deve fazê-lo da seguinte forma :
> > select upper(nome collate iso8859_1) from clientes ;
> > E assim funcionaria.
> > O collate na sintaxe viria sempre depois da informação e não antes, como
> > você tentou.
> > O uso mais prático é em pesquisas sem ter que usar upper ou funções
> > internas para remover acentuações, dessa forma :
> > select * from clientes
> > where nome collate pt_BR like 'a%'
> > Isso porque o collate pt_BR é case/accent insensitive.
> >
> >
> > Gladiston Santana
> > Departamento de TI
> > Grupo Vidy
> > Tel (11) 4787-3122 ramal 228
> > Rod. Régis Bittencourt 3360 - Km 272,5
> > Taboão da Serra - SP - CEP: 06793-000
> > Visite nosso site: www.vidy.com.br
> > Visite também : www.expolabor.com.br
> >
> >
> >
> >
> >
> > Em 27 de novembro de 2012 16:02, André Conrado <acf em andreconrado.net
> > >escreveu:
> >
> > > Em 7 de maio de 2012 19:44, André Conrado <acf em andreconrado.net>
> > escreveu:
> > >
> > > > Amigos, encontrei uma dificuldade com o uso de Character set em
> > > > funções internas como UPPER.
> > > >
> > > > Ao executar o comando:
> > > >
> > > > SELECT UPPER(_iso8859_1 NOME) FROM CLIENTES;
> > > >
> > > > Me retornava o erro:
> > > >
> > > > Dynamic SQL Error SQL error code = -104 Token unknown - line 1,
> column
> > 25
> > > > NOME
> > > >
> > > > Como se NOME fosse uma parte desconhecida da função.
> > > >
> > > > Depois de várias tentativas, descobri que executando assim:
> > > >
> > > > SELECT UPPER(_iso8859_1 '' || NOME) FROM CLIENTES;
> > > >
> > > > Funciona perfeitamente.
> > > >
> > > > Alguém sabe dizer porque?
> > > >
> > > > abçs.
> > > >
> > >
> > >
> > >
> > > --
> > > Um Abraço,
> > > André Conrado.
> > >
> > > 055 21 8840-6232 - Claro
> > > e-mail: acf em andreconrado.net
> > > http://andreconrado.net
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
>
> --
> Um Abraço,
> André Conrado.
>
> 055 21 8840-6232 - Claro
> e-mail: acf em andreconrado.net
> http://andreconrado.net
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista