quinta-feira, 27 de maio de 2010

Firebird - Comandos SQL úteis - Substring, Cast, Case, Like




Olá amigos esse post abaixo é um copy / paste que fiz do endereço no final do post .... quero agradecer ao Thunder Boy pelas dicas ... não deixem de dar uma passada lá no blog dele e conferir. 


Problema: Como mostrar apenas parte dos dados de um coluna em um relatório?

=============================
SUBSTRING
=============================

Conheça o  “substring”, mas como ele funciona? 
A sintaxie é a seguinte: select substring (”nome do campo” from “coluna_inicial” for “caracteres”) from “nome da tabela”
Exemplo: A máscara de estoque é de 8 digitos, porém quero que na SQL mostre apenas os 3 últimos dígitos
select substring (codpa from 6 for 3) as Referencia from etprocab where codemp=1
Nota: Este comando é muito útil e pode ser usado inclusive para acerto de base, quando é necessário diminuir o tamanho de alguma configuração, para isto basta combiná-lo com update
=============================
CAST
=============================
Porém a coluna irá ser mostrada grande, devido ao tamanho que foi criada, ai neste caso basta usar o “cast” para reduzir o tamanho da coluna na consulta
Exemplo:
select cast(substring (codpa from 6 for 3) as varchar (3)) as Ref from etprocab
where codemp=1
Nota: Este comando é útil, para ser usado no gerrel, pois neste caso iria mostrar a coluna grande no excel e após usar o “cast” o tamanho da coluna fica limitada ao tamanho informado no comando
=============================
LIKE
=============================
Outro comando bacana é o like, que acredito que não seja novidade pra ninguém, porém mesmo assim vai a dica:
select * from dtclifor
where insestrg like ‘%NTO’ /* Neste caso o percentual antes da palavra substitui as letras que o antecede */
and insestrg like ‘ISE%’ /* Neste caso o percentual depois da palavra substitui as letras da sequencia */
and insestrg like ‘%EN%’ /* E entre percentuais ira retornar todos valores que contenham a consulta em qualquer parte do campo */
Mais se quiser consultar todos os registros que variam apenas um caracter, como faço?
Basta utilizar o “_” (underline) no lugar do percentual, pois neste caso ele irá considerar a variação de apenas uma casa decimal na consulta.
Exemplo:
select * from dtclifor
where codclifor like ‘10000_1′
=============================
CASE
=============================
E vai a dica do comando case, onde com ele é possivel mostrar dados que seriam mostrados por linha, nas colunas
Exemplo:
select
sum ( case when vendedor = 1 then pretot else 0 end ) as Vendedor_1,
sum ( case when vendedor = 2 then pretot else 0 end ) as Vendedor_2,
sum ( case when vendedor = 3 then pretot else 0 end ) as Vendedor_3,
sum ( case when vendedor = 4 then pretot else 0 end ) as Vendedor_4
from vtvencor
where tipo in (’VBA’, ‘VBT’, ‘VCO’)
and situacao=1
and codemp=1
Nota: Este é um exemplo simples de como usar o comando case, onde mostra o valor vendido com base na tabela vtvencor, porém não é considerado os descontos e acréscimos do cadastro da venda e mostra os valores independente da venda cadastrada ou não. É apenas para demonstrar o uso do case.
=============================
COMENTÁRIO EM COMANDOS
=============================
Outra dica útil é poder colocar comentários em comandos para isso basta entre os comentários colocar as tags “/*” para iniciar e “*/” para finalizar, com isso ao executar o comando, não será considerado o que estiver entre as tags
Exemplo:
select * from dtclifor
where codemp=1 /* Comentário qualquer de sua preferencia… */


Nenhum comentário:

Postar um comentário