somar digitos de um campo

28/08/2009

0

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 agradeçia

peace


Tgcsta

Tgcsta

Responder

Posts

31/08/2009

Emerson Nascimento

creio que isso só seja possível através de user functions.
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



Responder

01/09/2009

Tgcsta

obrigado pela ajuda, mas o problema é que tenho de começar com o SELECT..
é 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


Responder

01/09/2009

Tgcsta

peço desculpa mas enviei o link errado. o certo é este:

http://www.sql-ex.ru/exercises.php?N=4

Pergunta 4.

peace


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar