Usuário com melhor resposta
Inserir 01 como forma numérica

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
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.brSe 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.- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 21 de setembro de 2012 18:44
- Marcado como Resposta Harley Araujo segunda-feira, 24 de setembro de 2012 11:30
-
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 + 1Entã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_TABELATratando 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
-
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
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 -
-
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.brSe 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.- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 21 de setembro de 2012 18:44
- Marcado como Resposta Harley Araujo segunda-feira, 24 de setembro de 2012 11:30
-
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.
-
-
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.brSe 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. -
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 + 1Entã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_TABELATratando 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
-
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