Usuário com melhor resposta
Como inserir uma virgula no meio dos numeros de uma coluna inteira

Pergunta
-
Eu tenho um coluna que está preenchida com numeros, por exemplo "78 880000000000 "
só que ele na verdade era para ser, por exemplo, "78,880". Tem como eu inserir uma virgula depois do 12º numero da direita para a esquerda?
A única certeza que eu tinha é que a vírgula fica entre o 12° e o 13° da direita para esquerda em relação a quem está olhando para o monitor.
se for ficar mais fácil para vocês visualizarem eu retiro os 9 primeiros números da direita para a esquerda ficando "78880" assim eu tenho que colocar a vírgula em todos os números dessa coluna entre o 3° e o 4º da direita para a esquerda "78, 880
Estou sempre falando da direita para esquerda por que no caso de eu ter um numero "1244500000000000" no banco vou ter que converter para "1244,500"
e agora como eu faço.
O banco é SQL SERVER 2005
Respostas
-
faça a conversão.
segue exemplo:CREATE TABLE #TEMP (NumGrande numeric,NumCerto numeric) INSERT INTO #TEMP (NumGrande) VALUES (1244500000000000) INSERT INTO #TEMP (NumGrande) VALUES (78880000000000) UPDATE #TEMP SET NumCerto= reverse(stuff(reverse(cast(NumGrande as varchar(max))),13,0,'.')) SELECT * FROM #TEMP
Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino- Sugerido como Resposta Leonardo Marcelino sábado, 13 de março de 2010 18:23
- Marcado como Resposta ShaManPablo domingo, 14 de março de 2010 03:43
Todas as Respostas
-
Bom dia, segue um exemplo de como fazer.
-- criando tabela temporária declare @t table (num varchar(80)) -- populando a tabela insert into @t select '78880000000000' union select '1244500000000000' -- formatando o numero select num, Num_Novo = reverse(stuff(reverse(num),13,0,',')) from @t
Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino- Sugerido como Resposta Leonardo Marcelino sábado, 13 de março de 2010 18:23
-
Funcionou perfeitamente, porem os meus campos são numericos
e eu queria modificar ele. Eu tentei
CREATE TABLE #TEMP (NumGrande numeric,NumCerto numeric) INSERT INTO #TEMP (NumGrande) VALUES (1244500000000000) INSERT INTO #TEMP (NumGrande) VALUES (78880000000000) UPDATE #TEMP SET NumCerto= reverse(stuff(reverse(NumGrande),13,0,'.')) SELECT * FROM #TEMP
Mas o meu resultado foi esse, como eu recupero os valores após o ponto.
NumGrande NumCerto
78880000000000 79
1244500000000000 1245
PS: Eu preciso usar "." pra seperar casa decimal, falha minha -
faça a conversão.
segue exemplo:CREATE TABLE #TEMP (NumGrande numeric,NumCerto numeric) INSERT INTO #TEMP (NumGrande) VALUES (1244500000000000) INSERT INTO #TEMP (NumGrande) VALUES (78880000000000) UPDATE #TEMP SET NumCerto= reverse(stuff(reverse(cast(NumGrande as varchar(max))),13,0,'.')) SELECT * FROM #TEMP
Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino- Sugerido como Resposta Leonardo Marcelino sábado, 13 de março de 2010 18:23
- Marcado como Resposta ShaManPablo domingo, 14 de março de 2010 03:43
-
A solução proposta pelo Leonardo está ótima e consegui solucionar meu problema, mas é preciso uma pequena correção. O campo que vai receber o novo numero, tem que específica as casas décimas, se não ele vai arredondar e você perde os valores após o "ponto".
Fica assim:CREATE TABLE #TEMP (NumGrande numeric,NumCerto numeric(20,2)) INSERT INTO #TEMP (NumGrande) VALUES (1244500000000000) INSERT INTO #TEMP (NumGrande) VALUES (78880000000000) UPDATE #TEMP SET NumCerto = reverse(stuff(reverse(cast(NumGrande as varchar(max))),13,0,'.')) SELECT * FROM #TEMP