Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bravin10

Mudar tipo de dados em um campo

Recommended Posts

Fala Galera,

Gostaria de saber como faço pra mudar um campo de varchar para int...

 

já vi que para eu converter os dados já incluídos eu utilizo SELECT CONVERT (int, nome_do_campo) FROM nome_table...

 

mas se eu tenho um campo já definido antes como VARCHAR e quero colocá-lo agora como int, como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que é mais correto.

 

Criar uma coluna nova com o novo tipo.

Atualizar seus dados com os dados da coluna a ser desativada.

Verificar se foi ok

Deletar (ou desativar) a coluna antiga.

Tem a desvantagem da mudança do nome , mas uma mudança de tipo com certeza terá impacto em qualquer aplicação que teria de ser revista de qualquer forma.

Alguns BD´s suportam o rename , isto poderia ser feito aqui após a deleção da coluna antiga.

 

Acho que nenhum bd suporta uma mudança deste tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comando update

 

algo assim ....

 

update tabela

set coluna_nova = coluna_antiga

where ....

 

 

Dependendo do bd você terá que usar alguma conversão , no Oracle por exemplo algumas são automáticas.

 

Qq coisa fale.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando o PostgreSQL...

 

Vi algo do tipo numa apostila de psql...

 

UPDATE nome_tabela

SET coluna1 = "L1", coluna2="L2"

 

Segundo a apostila, o comando SET é seguido do nome da coluna e dps é seguido do novo valor desta coluna (no caso o L1 e L2).

 

Não entendi este valor da coluna... no que esse comando me ajudaria?

 

Lembrando meu objetivo (hehe): Quero criar um novo campo só q do tipo DECIMAL (se falei inteiro antes, me desculpe) antes estava VARCHAR.

 

Eu recebi um relatório do que devo fazer, só que tenho dúvidas de como fazer alguns e tal... se você ou vcs puderem me ajudar, ficarei muito grato :)

 

Então, vamos lá:

 

1- Exportar os dados da tabela DOACAO para um arquivo texto no formato .sql

2- Deletar todos os dados da tabela.

3- Dropar a coluna QUANTIDADE (é esta a coluna que quero que mude de VARCHAR para DECIMAL)

4- Adicionar nova coluna com o mesmo nome só que com o tipo diferente (agora sim DECIMAL =D)

5- Alterar o arquivo .sql gerado, fazendo com que os que eram da coluna que foi deletada possam ser adicionados na nova coluna (por exemplo, o que era varchar estava como "43". Deve ser alterado para 43. O que tiver com "43 roupas doadas" deve ficar como NULL)

6- Executar o arquivo .sql (provavelmente isso é jogar todos os dados de volta pra tabela, agora sim com o campo como DECIMAL :D )

 

Motta, obrigado pelas ajudas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tópico movido pois passou a ser dúvida de PostgreSQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom como achei esse post lá no SQL Server, e você não menciona o seu banco, vou responder isso, mas é valido para SQL server.

 

Você não consegue passar um valor varchar, nvarchar direto pra int, primeiro tem que ser para float e depois de float para int.

Cara a melhor maneira de se fazer isso, altere a tabela de varchar para float e salve, depois que estiver em float, altere para int.

Pronto! Isso você pode fazer através do Manager, alterando a propriedade da tabela.

 

Obs: Se tiver qualquer caracter incomum, que não seja .(ponto) ele irá dar erro na conversão.

 

Qualquer duvida posta ai!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blzz cara...

mas voltando ao psql...

 

como posso exportar dados da minha tabela, ou de um único campo desta tabela, para um arquivo .sql ?

 

outra coisa... quero excluir os dados de um CAMPO... que comando uso pra isso? nao quero excluir a coluna, quero excluir somente os dados dela...

 

obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.