none
FUNÇÃO PARA TRANSFORMAR '1' PARA '01' OU '001' RRS feed

  • Pergunta

  • Olá,

    Existe alguma função que me retorna uma quantidade de caracteres escolhida por mim, uma conversão de 1 caractere para 2 por exemplo ?

    Exemplo:

    Select #Função('1', 2)

    Return: '01'


    Pois sempre que preciso deixar 2 caracteres preciso verificar a quantidade total dos caracteres e então adicionar um zero antes caso seja 1.

    Teria outro jeito de fazer isso ? Já existe uma função para isso ?

    Obrigado,


    Felipe Souza.

    segunda-feira, 27 de maio de 2013 17:30

Respostas

  • Boa tarde,

    Não sei se é possível obter esse resultado com uma única função nativa, mas você pode experimentar mais ou menos dessa forma:

    select RIGHT(REPLICATE('0', 3) + '1', 3)

    Espero que seja útil.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex segunda-feira, 27 de maio de 2013 17:42
    • Marcado como Resposta Felipe Peres segunda-feira, 27 de maio de 2013 17:47
    segunda-feira, 27 de maio de 2013 17:41
  • Experimente mais ou menos dessa forma:

    SELECT
        CAST(FLOOR(MinhaColunaFloat) as varchar) + ':' + 
        LEFT(CAST((MinhaColunaFloat - FLOOR(MinhaColunaFloat)) * 100 as varchar) + '0', 2)
    

    Sobre a função Right, ela retorna a quantidade de caracteres a direita da string de acordo com o parâmetro; se você passar 2 como parâmetro, serão retornados os 2 últimos caracteres da direita.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Felipe Peres segunda-feira, 27 de maio de 2013 19:33
    segunda-feira, 27 de maio de 2013 19:11
  • Experimente dessa forma:

    SELECT
        CASE WHEN MinhaColunaFloat < 10 then '0' else '' end +
        CAST(FLOOR(MinhaColunaFloat) as varchar) + ':' + 
        LEFT(CAST((MinhaColunaFloat - FLOOR(MinhaColunaFloat)) * 100 as varchar) + '0', 2)

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Felipe Peres segunda-feira, 27 de maio de 2013 19:58
    segunda-feira, 27 de maio de 2013 19:39

Todas as Respostas

  • Boa tarde,

    Não sei se é possível obter esse resultado com uma única função nativa, mas você pode experimentar mais ou menos dessa forma:

    select RIGHT(REPLICATE('0', 3) + '1', 3)

    Espero que seja útil.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex segunda-feira, 27 de maio de 2013 17:42
    • Marcado como Resposta Felipe Peres segunda-feira, 27 de maio de 2013 17:47
    segunda-feira, 27 de maio de 2013 17:41
  • Olá felipe, não sei se vai te ajudar.

    Você pode contar a quantidade de caractere utilizando a Função LEN

    select 
    	LEN (Coluna)
    FROM
    	teste

    Espero que eu tenha te ajudado

    Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 27 de maio de 2013 17:47
  • Boa tarde,

    Muito obrigado, já ajuda bastante.

    Eu estava fazendo com o comando CASE.

    Valew, até.


    Felipe Souza.

    segunda-feira, 27 de maio de 2013 17:48
  • Olá,

    O que estou precisando fazer é transformar tal "texto" em hora.

    Exemplo:

    0,3 = 00:30

    1 = 01:00

    1,5 = 01:50

    Ai eu iria pegar todo texto antes da virgula com PATINDEX e mudar para 2 digitos, e fazer o mesmo depois da virgula, depois iria concatenar um com o outro com ':' no meio.

    Seria o modo mais fácil ?

    Obrigado desde já.


    Felipe Souza.

    segunda-feira, 27 de maio de 2013 17:57
  • Esses valores estão gravados em uma tabela?

    Se estão, qual é o tipo de dados da coluna?


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 27 de maio de 2013 18:03
  • Estão sim, o tipo é FLOAT.

    Naquele exemplo que você me enviou estou com um problema.

    Quando o numero a ser trocado é '100' e eu coloco 2 dígitos, ele desconsidera 1.

    Preciso colocar 0 só quando tem 1 digito ( Exemplo: '1' ).

    Obrigado por ajudar,


    Felipe Souza.


    • Editado Felipe Peres segunda-feira, 27 de maio de 2013 18:38 COLOQUEI TIPO ERRADO
    segunda-feira, 27 de maio de 2013 18:10
  • Experimente mais ou menos dessa forma:

    SELECT
        CAST(FLOOR(MinhaColunaFloat) as varchar) + ':' + 
        LEFT(CAST((MinhaColunaFloat - FLOOR(MinhaColunaFloat)) * 100 as varchar) + '0', 2)
    

    Sobre a função Right, ela retorna a quantidade de caracteres a direita da string de acordo com o parâmetro; se você passar 2 como parâmetro, serão retornados os 2 últimos caracteres da direita.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Felipe Peres segunda-feira, 27 de maio de 2013 19:33
    segunda-feira, 27 de maio de 2013 19:11
  • Muito obrigado cara, é isso mesmo.

    Só preciso agora de concatenar um zero antes caso tenha apenas um digito antes dos dois pontos. Esta me retornando os dados da seguinte forma:

    1 = 1:00
    5 = 5:00
    1 = 1:00
    4 = 4:00
    0,5 = 0:50
    15 = 15:00

    Preciso deixar assim:

    1 = 01:00
    5 = 05:00
    1 = 01:00
    4 = 04:00
    0,5 = 00:50
    15 = 15:00

    Você já me deu o caminho. Vou tentar fazer e retorno com o resultado.

    Obrigado,


    Felipe Souza.

    segunda-feira, 27 de maio de 2013 19:25
  • Experimente dessa forma:

    SELECT
        CASE WHEN MinhaColunaFloat < 10 then '0' else '' end +
        CAST(FLOOR(MinhaColunaFloat) as varchar) + ':' + 
        LEFT(CAST((MinhaColunaFloat - FLOOR(MinhaColunaFloat)) * 100 as varchar) + '0', 2)

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Felipe Peres segunda-feira, 27 de maio de 2013 19:58
    segunda-feira, 27 de maio de 2013 19:39
  • Ai sim, Perfeito !

    Desculpa por encher o saco ae, valeu por ajudar

    Até mais,


    Felipe Souza.

    segunda-feira, 27 de maio de 2013 20:00