quarta-feira, 16 de maio de 2007

Case-insesitive em Postgresql

Outro grande problema que eu enfrentei foi a comparação de strings. O operador LIKE é case-sensitive(sensivel a maiúsculas e minúsculas), o que prejudicava as buscas por registros.

A solução foi simples e rápida. Existe um operador chamado ILIKE, o qual é case-insensitive.

Exemplo:

SELECT nome FROM empregado WHERE nome ILIKE 'vinicius';

O código acima retorna todos os registros onde o nome seja 'vinicius', 'Vinicius', 'ViNiCiUs', etc.

segunda-feira, 14 de maio de 2007

Auto-Incremento em PostgreSQL

Para se criar um campo de uma tabela com valores sequenciais(adequado para chaves) existem duas formas. Uma delas leva a outra.

Vamos comecar pela mais simples, criar a sequencia no momento da criaçao da tabela através do tipo SERIAL:

CREATE TABLE pessoa
(id SERIAL PRIMARY KEY,
nome VARCHAR(100));


A forma acima simula o que eu vou exemplificar abaixo, a criação da sequencia manualmente:

CREATE SEQUENCE pessoa_id_seq;

CREATE TABLE pessoa
id INTEGER PRIMARY KEY DEFAULT nextval('pessoa_id_seq'),
nome VARCHAR(100));


Atente para a igualdade entre o nome da sequencia e o parametro passado para a função nextval.

Bem, é isso, espero ter ajudado.