domingo, 2 de junho de 2013

Comandos úteis para PostgreSQL - Parte 3

Olá galera,

Hoje vamos falar sobre mais alguns comandos úteis para o PostgreSQL. O primeiro deles é o INITCAP que deixa a primeira letra da palavra maiúscula. O exemplo abaixo irá atualizar o campo fazendo a transformação das primeiras letras.

UPDATE sua_tabela SET seu_campo = INITCAP(seu_campo);

Supondo que o texto fosse PROGRAMAR É PURA DIVERSÃO, o resultado com INITCAP seria Programar É Pura Diversão. Como você pode notar, esse recurso termina não sendo muito útil. Na maior parte dos casos precisamos somente da primeira letra maiúscula.

Você vai me falar que já entendeu e vai querer uma solução correto? A resposta está na nosso próximo código.

SELECT UPPER(LEFT(seu_campo, 1)) || LOWER(SUBSTRING(seu_campo FROM 2)) FROM sua_tabela;

Utilizando uma combinação do UPPER, LEFT, LOWER e SUBSTRING chegamos ao resultado esperado.

Explicação do código:

  • UPPER(LEFT(seu_campo, 1)) - A primeira letra da esquerda é transformada em maiúscula.
  • || - Utilizado para concatenação no SQL.
  • LOWER(SUBSTRING(seu_campo FROM 2)) - A frase a partir da segunda letra é transformada em minúscula.

Com o código acima, nosso texto de exemplo passaria a ser Programar é pura diversão.

A próxima dica é muito útil para salvar datas no formato do banco. Imagine um campo character varying com datas no formato dd/MM/YYYY que precisam ser convertidas para um campo date.

SELECT DATE(seu_campo) FROM sua_tabela;

Simples não?! É somente isso e dispensa comentários.

Nossa última dica de hoje serve para formatar números. Para exemplificar, podemos citar um campo bigint com o valor 11000.56 e saída tem de vir formatada com pontos e vírgulas.

SELECT to_char(11000.56, 'FM9G999G999D99');

O resultado do código acima é 11.000,56. O segredo está na "máscara" utilizada.

Explicação do código:

  • to_char - Converte em string.
  • D - Separador decimal.
  • G - Separador de grupo.
  • FM - Suprimi espaços em branco e zeros.

Bem pessoal, era isso que tínhamos para hoje. Um grande abraço e até a próxima.