Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SENAMA

Importar valor negativo sinal a direita

Recommended Posts

oi turma

 

O problema:

Tenho arquivo TXT exportado pelo SAP com valores sinalizados exemplo:

 

10098,88

900,98-

1,50-

200,00

1487,99-

 

Como fazer o SQL SERVER importar os valores negativos para campo numérico?

 

Conto com ajuda de vocês.

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valores negativos em campos numericos sao importados normalmente:

 

declare @valor numeric(10,2)
set @valor = -10
 
select @valor

Porem no seu caso tera que inverter o valor negativo:

 

 

declare @valorSAP varchar(100)
set @valorSAP = '900,98-'
set @valorSAP = replace(@valorSAP,',','.')
select CONVERT(numeric(10,2),  '-' +  SUBSTRING(@valorSAP,1,(CHARINDEX('-', @valorSAP))-1))
 

Melhorando um pouco o código:

 

 

declare @valorSAP varchar(100)
set @valorSAP = '900,98-'
set @valorSAP = replace(@valorSAP,',','.')
 
select case when (@valorSAP like '%-%')  then
CONVERT(numeric(10,2),  '-' +  SUBSTRING(@valorSAP,1,(CHARINDEX('-', @valorSAP))-1))
else @valorSAP end as a

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Valores negativos em campos numericos sao importados normalmente:

declare @valor numeric(10,2)
set @valor = -10
 
select @valor

Porem no seu caso tera que inverter o valor negativo:

declare @valorSAP varchar(100)
set @valorSAP = '900,98-'
set @valorSAP = replace(@valorSAP,',','.')
select CONVERT(numeric(10,2),  '-' +  SUBSTRING(@valorSAP,1,(CHARINDEX('-', @valorSAP))-1))
 

Melhorando um pouco o código:

declare @valorSAP varchar(100)
set @valorSAP = '900,98-'
set @valorSAP = replace(@valorSAP,',','.')
 
select case when (@valorSAP like '%-%')  then
CONVERT(numeric(10,2),  '-' +  SUBSTRING(@valorSAP,1,(CHARINDEX('-', @valorSAP))-1))
else @valorSAP end as a

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.