somar digitos de um campo
28/08/2009
0
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 agradeçia
peace
Tgcsta
Posts
31/08/2009
Emerson Nascimento
fiz a função abaixo que recebe um texto de até 50 caracteres e retorna a soma dos caracteres numéricos.
CREATE FUNCTION [dbo].[SOMA_CARAC] (@VALORSTR VARCHAR(50)) RETURNS INTEGER AS BEGIN DECLARE @I INTEGER DECLARE @LETRA CHAR(1) DECLARE @IRET INTEGER DECLARE @RETORNO VARCHAR(10) SET @IRET = 0 SET @I = 1 WHILE @I <= LEN(@VALORSTR) BEGIN SET @LETRA = SUBSTRING(@VALORSTR,@I,1) IF @LETRA BETWEEN ´0´ AND ´9´ SET @IRET = @IRET + CAST(@LETRA AS INTEGER) SET @I = @I + 1 END RETURN @IRET END
depois é só usar como qualquer função interna do SQL Server.
SELECT model, dbo.SOMA_CARAC(model) NumModelo FROM product
01/09/2009
Tgcsta
é mais facil eu colocar aqui o link da pergunta, para ver se me conseguem ajudar
http://www.sql-ex.ru/exercises.php?N=2
mais uma vez obrigado.
peace
01/09/2009
Tgcsta
http://www.sql-ex.ru/exercises.php?N=4
Pergunta 4.
peace
Clique aqui para fazer login e interagir na Comunidade :)