Usuário com melhor resposta
Mudar campo float para int e adicionar chave primaria

Pergunta
-
Boa tarde pessoal !
Alguém saberia me dizer como mudo um campo float para int e esse mesmo campo passara a ser chave primaria .
tentei fazer pela interface mas como a tabela ja tem 30 mil registros nao consigo... esse campo que quero mudar eh uma campo chamado código ou seja ele eh único e nunca se repete mas eu recebo esse dados em excel e quando importo ele vai pra o sqlserver como float mesmo antes de importar eu ir la no excel e mudar para numero e etc.
Obrigado pela atencao!
Respostas
-
Rafael,
você pode usar o "ALTER COLUMN" para alterar o tipo de dados da sua coluna. É importante notar que ao converter para o tipo inteiro os valores "quebrados" serão convertidos para inteiros, por exemplo, 3,55 vai se tornar 3 na nova coluna, logo, se você tiver duas linhas na sua planilha com os códigos 4 e 4,75 por exemplo, você não conseguirá criar a chave primária, pois as duas linhas terão o mesmo valor, no caso 4, após a conversão para o tipo int.
Segue script para teste.
create table Teste (Codigo Float)
GO-- Insere 30 mil registros na tabela
Insert into Teste values(1.00)
Insert into Teste values(2.00)
Insert into Teste values(3.55)
go 10000-- Verifica os dados
select * from Teste-- Altera o tipo da coluna para int
alter table Teste Alter Column Codigo Int
GO-- Verifica os dados após a alteração do tipo da coluna
select * from Teste
GOdrop table Teste
Espero que ajude! Luiz Phellipe
- Sugerido como Resposta Luiz Phellipe sábado, 10 de março de 2012 19:25
- Editado Luiz Phellipe sábado, 10 de março de 2012 19:33
- Marcado como Resposta Eder Costa terça-feira, 13 de março de 2012 13:18
Todas as Respostas
-
Mas olha só: dentre esses 30 mil registros, existe algum código que não seja inteiro? Pois se existir um código que seja, não será possível mudar o tipo para int. Exemplo: Se um dos códigos for 45.78, isso inviabilizará a mudança de tipo.
Você pode excluir a chave desse campo e, em seguida, tentar mudar para int. Se o SQL apresentar erro, provavelmente será um erro devido a este motivo (valores que não condizem com o tipo int).
Porém, se o SQL conseguir alterar o tipo de dados, basta recriar a chave depois.
Quanto a importar do excel e já vir como float, pode ser que seja justamente por ter algum conteúdo float. Você pode experimentar fazer a exportação para uma tabela temporária na qual o campo código já poderá ser do tipo int.
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. -
Rafael,
você pode usar o "ALTER COLUMN" para alterar o tipo de dados da sua coluna. É importante notar que ao converter para o tipo inteiro os valores "quebrados" serão convertidos para inteiros, por exemplo, 3,55 vai se tornar 3 na nova coluna, logo, se você tiver duas linhas na sua planilha com os códigos 4 e 4,75 por exemplo, você não conseguirá criar a chave primária, pois as duas linhas terão o mesmo valor, no caso 4, após a conversão para o tipo int.
Segue script para teste.
create table Teste (Codigo Float)
GO-- Insere 30 mil registros na tabela
Insert into Teste values(1.00)
Insert into Teste values(2.00)
Insert into Teste values(3.55)
go 10000-- Verifica os dados
select * from Teste-- Altera o tipo da coluna para int
alter table Teste Alter Column Codigo Int
GO-- Verifica os dados após a alteração do tipo da coluna
select * from Teste
GOdrop table Teste
Espero que ajude! Luiz Phellipe
- Sugerido como Resposta Luiz Phellipe sábado, 10 de março de 2012 19:25
- Editado Luiz Phellipe sábado, 10 de março de 2012 19:33
- Marcado como Resposta Eder Costa terça-feira, 13 de março de 2012 13:18