segunda-feira, 6 de dezembro de 2010

Exibindo strings associadas a números no MySQL

Em uma aplicação Lazarus acessando MySQL criei um campo estado civil para armazenar tal informação em forma de número. Ou seja, para cada estado haveria um número correspondente:

0 - solteiro
1 - casado
2 - união estável
3 - separado
4 - divorciado
5 - viúvo

Por preguiça de criar uma tabela para armazenar estas descrições (e também por conta da simplicidade da aplicação), resolvi exibir tais descrições em tempo de execução da consulta. Após uma googlada descobri um comando que resolveria meu caso: MAKE_SET. Este comando cria um conjunto de strings e exibe a que está associada à determinada posição neste conjunto. Porém, o comando MAKE_SET usa um operador binário. Como o meu campo armazenava valores decimais precisei usar a função POW para converter os números para os correpondentes binários. Por exemplo, usando a associação representada na tabela acima minha consulta ficou assim:

SELECT cliente.*, MAKE_SET(POW(2, estado_civil), "solteiro", "casado", "união estável", "separado", "divorciado", "viúvo") AS EstadoCivil FROM cliente

A função POW, no caso acima, eleva 2 a potência armazenada no campo estado_civil. E converte o número ao equivalente necessário para pegar corretamente a descrição no conjunto criado pelo MAKE_SET. Infelizmente somente encontrei referência para este comando no MySQL.

[]'s,

Ericson Benjamim.