Cum se poate schimba tipul de date al unei coloane fără a renunța la coloană cu interogare? (Programare, Server Sql)

Samiksha a intrebat.

Am o coloană care are un tip de date : datetime. Dar acum vreau să o convertesc în datatype varchar. Pot să modific tipul de date fără a renunța la coloană? Dacă da, atunci vă rog să explicați cum?

15 răspunsuri
Mark Brittingham

Dacă ALTER COLUMN nu funcționează.

Nu este neobișnuit ca alter column să eșueze pentru că nu poate face transformarea pe care o doriți. În acest caz, soluția este să creați o tabelă fictivă NumeTablă_tmp, să copiați datele cu transformarea dvs. specializată în comanda Insert în masă, să renunțați la tabelul original și să redenumiți tabelul tmp cu numele tabelului original. Va trebui să renunțați și să recreați constrângerile Foreign key și, pentru performanță, probabil că veți dori să creați cheile după ce ați completat tabelul tmp.

Vi se pare mult de lucru? De fapt, nu este.

Dacă folosiți SQL Server, puteți face ca SQL Server Management Studio să facă munca în locul dumneavoastră!

  • Aduceți structura tabelului dvs. (faceți clic dreapta pe coloana tabelului și selectați „Modify”)
  • Efectuați toate modificările (dacă transformarea coloanei este ilegală, adăugați doar noua coloană – o veți remedia într-un moment).
  • Faceți clic dreapta pe fundalul ferestrei Modify și selectați „Generate Change Script”. În fereastra care apare, puteți copia scriptul de modificare în clipboard.
  • Anulați Modify (veți dori să testați scriptul, la urma urmei) și apoi lipiți scriptul într-o nouă fereastră de interogare.
  • Modificați după cum este necesar (de exemplu, adăugați transformarea dvs. în timp ce eliminați câmpul din declarația tabelului tmp) și acum aveți scriptul necesar pentru a face transformarea.

devio

MSDN spune

ALTER TABLE mytable ALTER COLUMN mycolumn newtype

Atenție la limitările clauzei ALTER COLUMN enumerate în articol

Pratyay
ALTER TABLE [table name] MODIFY COLUMN [column name] datatype

capotej
ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20)

Comentarii

  • Dă eroare : Sintaxă incorectă lângă ‘nume coloană’ la execuție. –  > Por Samiksha.
  • @Samiksha, am dat peste asta când am scăpat din greșeală ‘COLUMN’ după ALTER –  > Por Sam.
SiwachGaurav

Este simplu! Doar tastați interogarea de mai jos

alter table table_Name alter column column_name datatype

alter table Message alter column message nvarchar(1024);

va funcționa programare fericită

Leon Tayson
ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20)

duc14s

Cu SQL server 2008 și mai mult, folosind această interogare:

ALTER TABLE [RecipeInventorys] ALTER COLUMN [RecipeName] varchar(550)

atrichkov

Această lucrare pentru 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

Syed Baqar Hassan
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)

user2650031

ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20) acest lucru este perfect pentru schimbarea tipului de date

Vinda

ORACLE – Modificarea tabelului nume_tabel modifica(nume_coloană nume_columnă nou_tip_date);

Meder Mamutov

ALTER TABLE yourtable MODIFY COLUMN yourcolumn datatype

Comentarii

  • acest răspuns a mai fost dat înainte. Votează răspunsul corect în loc să îl repeți. –  > Por slfan.
faisal khan
ALTER TABLE table_name
MODIFY (column_name data_type);

Jesse Pepper
ALTER tablename MODIFY columnName newColumnType

Totuși, nu sunt sigur cum se va gestiona schimbarea de la datetime la varchar, așa că s-ar putea să fie nevoie să redenumiți coloana, să adăugați una nouă cu numele vechi și tipul de date corect (varchar) și apoi să scrieți o interogare de actualizare pentru a popula noua coloană din cea veche.

http://www.1keydata.com/sql/sql-alter-table.html

Comentarii

  • Dă eroare: Sintaxă incorectă lângă „columnname” la execuție. –  > Por Samiksha.
  • unde am scris columnName trebuie să folosiți numele coloanei… faceți asta? Dacă tot nu reușește, poate fi un indiciu că nu funcționează pentru a converti datetime în varchar –  > Por Jesse Pepper.
  • Asta încerc să vă spun, modificarea nu funcționează pentru mssql 2005.  > Por Samiksha.
  • Sugestia lui Jesse de a redenumi și de a adăuga o nouă coloană este exact ceea ce trebuie să faceți. –  > Por OJ..
ATUL KARMAKAR
alter table [table name] remove [present column name] to [new column name.

Comentarii

  • Vă gândiți la ALTER TABLE table_name RENAME COLUMN old_name to new_name ceea ce nu este ceea ce a cerut OP. –  > Por Syon.