Archive for the ‘Banco de Dados’ Category
Consultas case-insensitive no PostgreSQL
quinta-feira, março 20th, 2008No PostgreSQL a cláusula LIKE é case-sensitive, ou seja, diferencia maiúsculas de minúsculas. A alternativa para consultas case-insensitive é a cláusula ILIKE, que funciona de modo semelhante ao LIKE:
SELECT * FROM tabela WHERE nome ILIKE '%Rogério%'
Há outro problema nesta consulta: tanto o LIKE quanto o ILIKE consideram os acentos, ou seja, se existir um 'Rogerio' (sem acento) na tabela este registro será ignorado. Para que a consulta não considere os acentos e traga tanto 'Rogério' quanto 'Rogerio' ou 'rogerio', podemos usar a função para remover acentos:
SELECT * FROM tabela WHERE sem_acentos(nome) ILIKE sem_acentos('%Rogério%')
Uma outra opção é remover os acentos da string passada no ILIKE antes de montar a query, usando a linguagem que você estiver usando para desenvolver. A consulta então ficaria assim:
SELECT * FROM tabela WHERE sem_acentos(nome) ILIKE '%Rogerio%'
PostgreSQL: função para remover acentuação
terça-feira, fevereiro 26th, 2008Uma funçãozinha para remover acentos de strings no PostgreSQL… Útil.
CREATE OR REPLACE FUNCTION sem_acentos(character varying)
RETURNS character varying AS
$BODY$
SELECT translate($1, 'áéíóúàèìòùãõâêîôôäëïöüçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇ', 'aeiouaeiouaoaeiooaeioucAEIOUAEIOUAOAEIOOAEIOUC')
$BODY$
LANGUAGE 'sql' VOLATILE;
MySQL no Slackware
segunda-feira, outubro 8th, 2007O comando mysql_install_db inicializa a estrutura com as permissões erradas no Slackware, o que faz com o que o banco não inicialize, apresentando um erro. Para evitar isso, altere o usuário corrente para mysql e então execute o comando, como ilustrado abaixo:
# Altera o usuário corrente para "mysql"
su - mysql
# Executa o comando para inicializar a estrutura do MySQL
mysql_install_db
Desta forma não haverá problemas com as permissões e o banco inicializará normalmente.
Fonte: Piter Punk's Home Page
Obter os registros com um campo repetido
sexta-feira, agosto 10th, 2007Para saber quais os registros com o valor repetido em um determinado campo, basta executar a seguinte query:
SELECT campo, count(*) FROM tabela GROUP BY campo HAVING count(*) > 1
Serão listados os valores de campo repetidos mais de uma vez.
Simples assim… ![]()