none
Inserir 01 como forma numérica RRS feed

  • Pergunta

  • Pessoal, tenho uma dúvida, já tentei no MYSQL e não conseguir, e gostaria de saber no SQL Server,

     eu tenho um cadastro que eu gostaria de começar inserindo apartir de 01..

    o padrão tem que ser.. (01...02..05..06..08..09)...10...12... 

    E só consigo inserir... 1..2..5..7..8..9...12..

    Valeuuuu

    quinta-feira, 20 de setembro de 2012 22:51

Respostas

  • Elton, quem tem que tratar isso é a sua aplicação. Isso não tem a ver em como os dados vão ficar armazenados.

    A sua aplicação é que terá a máscara necessária no componente que mostrar esta informação. Uma máscara 000 (dependendo da ferramenta de programação utilizada), por exemplo, sempre mostra o conteúdo com 3 casas, preenchendo com zero.

    Então, se o número recuperado é "5", um componente com a máscara mencionada mostraria o valor "005".

    Agora, se precisar recuperar esta informação para um exportação, por exemplo, terá que preencher com zeros no momento da leitura dos dados (Select).


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    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.

    sexta-feira, 21 de setembro de 2012 11:38
    Moderador
  • Elton, acho mais fácil deixar o campo numeric no banco pq ai vc pode incrementar sempre que necessário, se for varchar vc não vai poder fazer isso: 
    UPDATE TABELA SET CAMPO = CAMPO + 1

    Então deixa int/numeric/double (seja lá o que vc precisa) e na hora do select vc pode concatenar ('0' + CAMPO) de acordo com um tratamento, ou ainda, tratar o campo na sua aplicação.

    Tratando no banco:
    Select CASE(LEN( CAMPO_DO_BANCO ) ) WHEN 1 THEN '0' + CONVERT(CHAR(1), CAMPO_DO_BANCO)
    ELSE CONVERT(VARCHAR(10), CAMPO_DO_BANCO) END 
    AS NUMERO_FORMATADO
    From SUA_TABELA

    Tratando na aplicação:
    String variavel = CAMPO_DO_BANCO.ToString();
    if (variavel.Length == 1) 
    {
    variavel = "0" + variavel;
    }

    • Marcado como Resposta Harley Araujo segunda-feira, 24 de setembro de 2012 11:30
    sexta-feira, 21 de setembro de 2012 17:58
  • Elton,

    Faça o tratamento na aplicação é o mais indicado, além disso, pense assim, cada Zero a mais em uma linha de registro é mais um Bit que eu estarei ocupando em disco, com isso, terei um crescimento do meu banco, o que poderá gerar diversos impactos no seu comportamento.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Harley Araujo segunda-feira, 24 de setembro de 2012 11:30
    sexta-feira, 21 de setembro de 2012 18:45

Todas as Respostas

  • Elton,

    qual seria o objetivo disso?

    você não pode fazer esta formatação ao obter os dados:

    ex:

    DECLARE @COUNT INT 
    SET @COUNT = 1
    CREATE TABLE #TESTE(
    NUMERO INT)
    
    WHILE @COUNT<=50
    BEGIN
    INSERT INTO #TESTE
    VALUES(@COUNT)
    SET @COUNT=@COUNT+1
    END
    
    SELECT NUMERO FROM #TESTE
    
    SELECT RIGHT('0' + CAST(NUMERO as varchar),2)  FROM #TESTE

     

    [ ]´s,
    Lukas Baldan

    quinta-feira, 20 de setembro de 2012 23:50
  • Boa Noite o objetivo é sair como resultado 'quantidade'

    Só que não quero que saia como 1,2,3,4 e sim como 01..04..07 nesse formato,

    sexta-feira, 21 de setembro de 2012 02:17
  • Elton, quem tem que tratar isso é a sua aplicação. Isso não tem a ver em como os dados vão ficar armazenados.

    A sua aplicação é que terá a máscara necessária no componente que mostrar esta informação. Uma máscara 000 (dependendo da ferramenta de programação utilizada), por exemplo, sempre mostra o conteúdo com 3 casas, preenchendo com zero.

    Então, se o número recuperado é "5", um componente com a máscara mencionada mostraria o valor "005".

    Agora, se precisar recuperar esta informação para um exportação, por exemplo, terá que preencher com zeros no momento da leitura dos dados (Select).


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    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.

    sexta-feira, 21 de setembro de 2012 11:38
    Moderador
  • Elton, para isto o campo da sua tabela não pode ser numerico, campo numerico não insere 0 a esquerda, teria que ser um campo de caracteres char ou varchar por exemplo.

    Alexandre Matayosi Conde Mauricio. 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.

    sexta-feira, 21 de setembro de 2012 11:42
  • Valeu pessoal, axo que o jeito mesmo vai ser usar um varchar, ou algo assim. 

    Mas valeu, vida de programador é assim mesmo, senão quebrar a cabeça não tem graça. kkkkkk

    Abraços,

    sexta-feira, 21 de setembro de 2012 14:23
  • Elton, mas em que momento você precisa do 01, 02, 03?

    Pra que isso?

    Alguma exportação? Ou é pra apresentar ao usuário num sistema?


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    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.

    sexta-feira, 21 de setembro de 2012 14:30
    Moderador
  • Elton, acho mais fácil deixar o campo numeric no banco pq ai vc pode incrementar sempre que necessário, se for varchar vc não vai poder fazer isso: 
    UPDATE TABELA SET CAMPO = CAMPO + 1

    Então deixa int/numeric/double (seja lá o que vc precisa) e na hora do select vc pode concatenar ('0' + CAMPO) de acordo com um tratamento, ou ainda, tratar o campo na sua aplicação.

    Tratando no banco:
    Select CASE(LEN( CAMPO_DO_BANCO ) ) WHEN 1 THEN '0' + CONVERT(CHAR(1), CAMPO_DO_BANCO)
    ELSE CONVERT(VARCHAR(10), CAMPO_DO_BANCO) END 
    AS NUMERO_FORMATADO
    From SUA_TABELA

    Tratando na aplicação:
    String variavel = CAMPO_DO_BANCO.ToString();
    if (variavel.Length == 1) 
    {
    variavel = "0" + variavel;
    }

    • Marcado como Resposta Harley Araujo segunda-feira, 24 de setembro de 2012 11:30
    sexta-feira, 21 de setembro de 2012 17:58
  • Elton,

    Faça o tratamento na aplicação é o mais indicado, além disso, pense assim, cada Zero a mais em uma linha de registro é mais um Bit que eu estarei ocupando em disco, com isso, terei um crescimento do meu banco, o que poderá gerar diversos impactos no seu comportamento.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Harley Araujo segunda-feira, 24 de setembro de 2012 11:30
    sexta-feira, 21 de setembro de 2012 18:45