Jorge Oliveira Postado Agosto 28, 2009 Denunciar Share Postado Agosto 28, 2009 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Agosto 28, 2009 Denunciar Share Postado Agosto 28, 2009 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 rodadeclare @Campo as varchar(10)declare @Cont as intdeclare @Total as int-- Coloca aqui o campo que deseja somarset @Campo='ae1234'set @Cont = 1set @Total = 0While (select len(@Campo)) >= @ContBegin if isnumeric(substring(@Campo, @Cont, 1)) = 1 set @Total = (@Total + (convert(NUMERIC(6,0), (substring(@Campo, @Cont, 1))))) set @Cont = @Cont + 1Endselect @Total Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Jorge Oliveira
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
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.