25 Jul

Firebird – Comandos SQL úteis – Substring, Cast, Case, Like, etc

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… */

2 thoughts on “Firebird – Comandos SQL úteis – Substring, Cast, Case, Like, etc

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>