none
Configuração de String RRS feed

  • 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

    terça-feira, 18 de março de 2014 14:49

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 Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 19 de março de 2014 19:55
    Moderador
  • Deleted
    quarta-feira, 19 de março de 2014 20:40

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.


    terça-feira, 18 de março de 2014 16:05
  • 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 Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    terça-feira, 18 de março de 2014 19:27
    Moderador
  • Deleted
    terça-feira, 18 de março de 2014 21:21
  • 2008 r2  

    jose

    quarta-feira, 19 de março de 2014 01:09
  • Ola joao agradeço a atenção maas seria mesmo via T_SQL

    agradeço

    quarta-feira, 19 de março de 2014 01:10
  • 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 > 0

    tentei 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

    quarta-feira, 19 de março de 2014 01:15
  • Deleted
    quarta-feira, 19 de março de 2014 10:10
  • 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.

    quarta-feira, 19 de março de 2014 18:09
  • 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 Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 19 de março de 2014 18:54
    Moderador
  • 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

    quarta-feira, 19 de março de 2014 19:07
  • 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_D

    Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 19 de março de 2014 19:24
    Moderador
  • So q esse esse "PRCUEQ!"e money e nao  string como '1.25' ai ele da incompatibilidade.

    grato

    quarta-feira, 19 de março de 2014 19:36
  • 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 Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 19 de março de 2014 19:55
    Moderador
  • Deleted
    quarta-feira, 19 de março de 2014 20:40