Archive for the ‘Banco de Dados’ Category

Consultas case-insensitive no PostgreSQL

quinta-feira, março 20th, 2008

No 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, 2008

Uma 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, 2007

O 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, 2007

Para 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… ;)