CONSULTA QUE PEGAR NUMERO INTEIROS DE UM REGISTRO

 Tópico anterior Próximo tópico Novo tópico

CONSULTA QUE PEGAR NUMERO INTEIROS DE UM REGISTRO

SQL / DATABASE

 Compartilhe  Compartilhe  Compartilhe
#495733 - 25/11/2020 13:16:07

WEBIER
URUCUI
Cadast. em:Dezembro/2003


Boa tarde,

recentemente mudei todos os registros de minha tabela de produtos para 13 dígitos... antes usava código de barra com 4, 5, 9 dígitos... agora todos os produtos possui 13 digitos no campo cod_barra

simplesmente acrescentei zero até completar.... produto que era com cod_barra = 1456 agora é 0000000001456

Porem estou com uma duvida besta

tenho varios produtos.... uns usam cod. de barra criados de 4, 5 e 6 digitos como é o caso assim citado.... mais existem produtos com cod. barra de fabrica que uso tambem. ex: 7897655982933

Preciso fazer um select onde me mostre o maior numero numa sequencia de código(os que criei de até 6 dígitos), porem que ele não selecione os códigos de fabrica (reais)

exemplo:
Cód. Barra
0000000001456
0000000000123
7897655982933
0000000002050

nesse sequencia ele pegaria o 0000000002050 pq seria o maior numero de até 6 dígitos (retirando os zeros a esquerda)

fiz assim, porem ele conta todos os dígitos...
SELECT isnull(MAX(COD_BARRA), 0) as UltimoCodigo FROM produtos where len(COD_BARRA) < 6








Resposta escolhida #495831 - 11/12/2020 03:13:48

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Você tem algumas opções, porém, geralmente inserir de zeros na frente não é uma boa coisa, sendo que você precisa de operações como essa.

Se estiver usando SQL Server, ele não possui recurso de indexação de função como outros banco de dados. Isso significa que você vai gerar um Scan Sequencial... não é bacana. Mas considerando que já foi feito, tenho duas ideias:


A primeira é você converter o código para BIGINT antes de fazer a comparação...  porque quando você usa o 'LEN', ele vai contar os zeros também.
A segunda é fazer o max de uma substring...

Abraços

Não nasci pra programar, mas preciso me alimentar...


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WEBIER em 10/01/2021 12:43:17