Ir para conteúdo
Fórum Script Brasil
  • 0

somar dígitos de um campo


Jorge Oliveira

Pergunta

boas

Gostava de saber como consigo fazer uma query que me faça a soma dos digitos de um campo varchar.

exemplo: tenho um campo modelo com o seguinte valor 1234

e o resultado que pretendo é 1+2+3+4

Resultado: Soma=10

Consegui fazer da seguinte maneira:

SELECT model, CONVERT (NUMERIC(6,0), SUBSTRING(model,1,1)*1.0+SUBSTRING(model,2,1)*1.0+SUBSTRING(model,3,1)*1.0+SUBSTRING(model,4,1)*1.0)

FROM product

O problema é que podem haver campos com mais de 4 digitos ou com letras..não sei como resolver esse problema..se me poderem ajudar agradecia

Jorge

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Boa tarde Jorge...

Como o campo não tem tamanho fixo e pode ter letras, você terá q ler cada posição do string e ir somando.

Outra coisa: você não conseguirá executar lendo diretamente da tabela: "select XXX from product". você pode fazer uma temporária com duas colunas, tendo a 1ª coluna o campo a ser somado e o 2º campo o Total. Preencha a variável @Campo (abaixo) dando um "select top 1 XXXX from TEMPORARIA where Total is null". Executa o script (abaixo) e "updata" o campo Total. Faz um loop até preencher toda a coluna Total.

Coloquei um exemplo logo abaixo. Espero q ajude. Se tiver dificuldade pra fazer, me fala...

-- Seleciona o script todo e roda

declare @Campo as varchar(10)

declare @Cont as int

declare @Total as int

-- Coloca aqui o campo que deseja somar

set @Campo='ae1234'

set @Cont = 1

set @Total = 0

While (select len(@Campo)) >= @Cont

Begin

if isnumeric(substring(@Campo, @Cont, 1)) = 1

set @Total = (@Total + (convert(NUMERIC(6,0), (substring(@Campo, @Cont, 1)))))

set @Cont = @Cont + 1

End

select @Total

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...