O primeiro é o de precisar o número de registros de uma consulta junto com os dados. A solução ineficiente é a de executar a consulta duas vezes; usando count() primeiro e buscando os dados depois. As funções analíticas são pouco conhecidas ainda, infelizmente.
select count(1)
from pessoas;
select nome
from pessoas;
Usando a versão analítica de count(), as duas consultas podem ser unidas.
select nome, count(1) over ()
from pessoas
E ganha-se uma coluna com o total de linhas.
O segundo problema é o de retirar acentos. Já vi soluções com múltiplos ifs, com case, e até com muitos replace() aninhados.
A minha solução preferida é muito simples e fácil de ler:
select nome, translate(nome,
'ÀÁÃÂÄÈÉÊËÙÚÛÜÌÍÎÏÒÓÔÕÖÇÑàáãâäèéêëùúûüìíîïòóôõöçñ',
'AAAAAEEEEUUUUIIIIOOOOOCNaaaaaeeeeuuuuiiiiooooocn')
from pessoas;
Talvez haja uma solução mais curta (sei que há em Java), mas não creio que haja uma tão legível.
Nenhum comentário:
Postar um comentário