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... */
Gostaria de saber quem postou este conteudo…
legal, gostei mesmo, estas dicas estão sendo muito proveitosas!
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á!
Is Substring, Cast really need to be considered in writing commands?