Usuário com melhor resposta
Configuração de String

Pergunta
-
Ola bom dia,
Gostaria de pedir ajuda que para uns pode ser banal e facil,
mas para mim que to engatinhando to apanhando bastante.
Tenho um leiaute de um arquivo para exportacao de dados e nele pede algumas formatacoes nos campos,
gostaria de trazer ja tudo formatado para a aplicacao via sqlserver.
Assim descrito:
- Campos S(String) deverão ser informados com espaços em branco, quando não houver valor a ser informado. Exemplo: |ABC123 |
- Campos N(numéricos) deverão ser informados com os zeros à esquerda. Exemplo: |00000123|.
- Campos Decimal(valores) deverão vir com o “.” (ponto), para separação dos centavos exemplo: O valor 1.23 formatando em um campo(13.2) ficaria assim: |0000000001.23|.Alguém poderia me dar um exemplo de como fazer essas formatações?
DEsde ja agradeço a ajuda de Todos
Obrigado
Respostas
-
So q esse esse "PRCUEQ!"e money e nao string como '1.25' ai ele da incompatibilidade.
grato
Decio,
Utilize o CONVERT. Segue abaixo o exemplo com uma variável tipo "money" convertida como texto.
DECLARE @VALOR money SET @VALOR = 1.25 SELECT REPLICATE('0',9 - LEN(CONVERT(varchar,@VALOR))) + CONVERT(varchar,@VALOR) + REPLICATE('0',4 - LEN(SUBSTRING(CONVERT(varchar,@VALOR), CHARINDEX(CONVERT(varchar,@VALOR), '.') - 1, 4) )) AS CAMPO_D
Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Decio Morais Neto quinta-feira, 20 de março de 2014 15:12
-
Deleted
- Marcado como Resposta Decio Morais Neto quinta-feira, 20 de março de 2014 15:12
Todas as Respostas
-
Olá Decio Nero.
Sua dúvida seria em retornar as informações formatadas em formulário?
Caso seja, você pode usar as opções de conversões de dados com o Parse (http://msdn.microsoft.com/pt-br/library/System.Int32.Parse(v=vs.110).aspx) ou o Convert (http://msdn.microsoft.com/pt-br/library/system.convert(v=vs.110).aspx).
Nos links possui alguns exemplos.
-
Decio,
Em T-SQL você pode utilizar a função REPLICATE junto com o tamanho que cada campo deve ter.
Veja o exemplo abaixo:
SELECT '|' + 'ABC123' + REPLICATE(' ',20 - LEN('123')) + '|' AS CAMPO_S, REPLICATE('0',20 - LEN('123')) + '123' + '|' AS CAMPO_N, REPLICATE('0',13 - LEN('1.23')) + '1.23' + '|' AS CAMPO_D
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
-
-
Select REPLICATE('0',13 - LEN(Prcueq)) + Prcueq + '|' AS CAMPO_D
from Produtos P
join SaldoProdutos SP on P.CodProduto=SP.CodProduto
join Classificacao C on P.CodClassificacao=C.CodClassificacao
where CodEmp=501 and eatueq > 0tentei assim mas o campo Prcueq e valor e naum deixa converter
Mensagem 235, Nível 16, Estado 0, Linha 1
Não é possível converter um valor char em money. A sintaxe do valor char está incorreta.grato
-
-
Obrigado Jose pela resposta quase la.
a unica coisa q preciso agora e a formatação nesse mesmo exemplo ai ele ta jogando apenas 2 casas apos a virgula (.) e eu precisava de 4 tem alguma ideia de como pode ser feito.
Obrigado o resto deu tudo certo.
-
Obrigado Jose pela resposta quase la.
a unica coisa q preciso agora e a formatação nesse mesmo exemplo ai ele ta jogando apenas 2 casas apos a virgula (.) e eu precisava de 4 tem alguma ideia de como pode ser feito.
Obrigado o resto deu tudo certo.
Decio,
Basta alterar o datatype. Veja abaixo:
declare @TamCampo int, @VarNumérico decimal(13,4);
Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
mas so to usando assim
SELECT right((replicate('0', 13) + convert(varchar, Prcueq)), 13) + '|' from Produtos P join SaldoProdutos SP on P.CodProduto=SP.CodProduto join Classificacao C on P.CodClassificacao=C.CodClassificacao where CodEmp=501 and eatueq > 0;
e esse prcueq e um decimal q ta trazendo '00000000001.25' e precisa vier assim
'000000001.2500'
obrigadooooooooooooooo
-
mas so to usando assim
SELECT right((replicate('0', 13) + convert(varchar, Prcueq)), 13) + '|' from Produtos P join SaldoProdutos SP on P.CodProduto=SP.CodProduto join Classificacao C on P.CodClassificacao=C.CodClassificacao where CodEmp=501 and eatueq > 0;
e esse prcueq e um decimal q ta trazendo '00000000001.25' e precisa vier assim
'000000001.2500'
obrigadooooooooooooooo
Decio,
Segue o script, baseado naquele primeiro exemplo que postei neste tópico:
SELECT REPLICATE('0',9 - LEN('1.25')) + '1.25' +
REPLICATE('0',4 - LEN(SUBSTRING('1.25', CHARINDEX('1.25', '.') - 1, 4) )) AS CAMPO_DNão esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
So q esse esse "PRCUEQ!"e money e nao string como '1.25' ai ele da incompatibilidade.
grato
Decio,
Utilize o CONVERT. Segue abaixo o exemplo com uma variável tipo "money" convertida como texto.
DECLARE @VALOR money SET @VALOR = 1.25 SELECT REPLICATE('0',9 - LEN(CONVERT(varchar,@VALOR))) + CONVERT(varchar,@VALOR) + REPLICATE('0',4 - LEN(SUBSTRING(CONVERT(varchar,@VALOR), CHARINDEX(CONVERT(varchar,@VALOR), '.') - 1, 4) )) AS CAMPO_D
Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Decio Morais Neto quinta-feira, 20 de março de 2014 15:12
-
Deleted
- Marcado como Resposta Decio Morais Neto quinta-feira, 20 de março de 2014 15:12