Como alterar o tipo de dados de uma coluna sem deixar cair a coluna com a consulta?
Tenho uma coluna que tem um tipo de dados : datetime. Mas agora quero convertê-lo para datatype varchar. Posso alterar o tipo de dados sem deixar cair a coluna? Em caso afirmativo, explicar como?
14 answers
Se a ALTER COLUMN não funcionar.
Não é incomum para alterar coluna falhar porque não pode fazer a transformação que você deseja. Neste caso, a solução é criar uma tabela fictícia TableName_tmp, copiar os dados com a sua transformação especializada no comando bulk Insert, largar a tabela original, e mudar o nome da tabela tmp para o nome da tabela original. Você vai ter que cair e recriar as restrições chave estrangeiras e, para o desempenho, você provavelmente vai querer para criar chaves depois de preencher a tabela tmp.
parece-te muito trabalho?Na verdade, não é.
Se está a usar o servidor SQL, pode fazer com que o estúdio de gestão de servidores SQL faça o trabalho por si! Mostre a estrutura da sua tabela (carregue com o botão direito na tabela e seleccione "Modificar") e faça todas as suas alterações (se a transformação da coluna for ilegal, basta adicionar a sua nova coluna-irá remendá - la num momento). Em seguida, clique com o botão direito no fundo da janela Modificar e seleccione " gerar um programa de mudança."Na janela que aparece, você pode copiar o script de mudança para a área de transferência. Cancele a modificação (irá querer testar o seu programa, afinal de contas) e depois cole o programa numa nova janela de pesquisa. Modificar conforme necessário (por exemplo, adicionar a sua transformação ao remover o campo da declaração da tabela tmp) e agora você tem o script necessário para fazer a sua transformação.
ALTER TABLE mytable ALTER COLUMN mycolumn newtype
Cuidado com as limitações da cláusula de alteração constante do artigo
ALTER TABLE [table name] MODIFY COLUMN [column name] datatype
ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20)
ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20)
Vai funcionar. programação felizAlterar o table_ nome_ tabela alterar o tipo de dados da coluna column_ nome
alter table Message alter column message nvarchar(1024);
Com o SQL server 2008 e mais, usando esta consulta:
ALTER TABLE [RecipeInventorys] ALTER COLUMN [RecipeName] varchar(550)
Este trabalho para o postgresql 9.0.3
alter table [table name] ALTER COLUMN [column name] TYPE [character varying];
Http://www.postgresql.org/docs/8.0/static/sql-altertable.html
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Altere a tabela o seu nome deve alterar a coluna o seu nome deve ser VARCHAR(20) isto é perfeito para mudar para datatype
ORACLE-Alter table_name modify (column_ name new_ datatype);
ALTER TABLE table_name
MODIFY (column_name data_type);
ALTER tablename MODIFY columnName newColumnType
Não sei como irá lidar com a mudança do datetime para o varchar, por isso poderá ter de mudar o nome da coluna, adicionar uma nova com o nome antigo e o tipo de dados correcto (varchar) e, em seguida, escrever uma consulta de actualização para preencher a nova coluna do antigo.
alter table [table name] remove [present column name] to [new column name.