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”, e como ele funciona.

A sintaxe é a seguinte:

SELECT SUBSTRING ("nome do campo"
                  FROM "coluna_inicial"
                  FOR "caracteres")
FROM "nome da tabela"

Exemplo: A máscara de estoque é de 8 dígitos, 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 geral, pois neste caso iria mostrar a coluna grande no CSV 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 é possível 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... */

 

 

4 thoughts to “Firebird – Comandos SQL úteis – Substring, Cast, Case, Like, etc”

  1. Boa tarde!
    Estou usando um Select (SQL) em uma planilha Excel, na query utilizo o comando LIKE, porém preciso deixar o conteúdo como parâmetro e não estou conseguindo.
    Caso possam me ajudar, agradeço desde já!

Leave a Reply

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