2012-11-23 25 views

risposta

30

Sì di sicuro

ALTER TABLE table_name MODIFY column_name VARCHAR(X)

+0

Grazie mille per la risposta super veloce :) – user1768076

4

Per MS SQL:

ALTER TABLE table_name 
ALTER COLUMN column_name datatype(value) 

Per MySQL

ALTER TABLE table_name 
MODIFY column_name datatype(value) 
+1

P riassumibilmente 'datatype (value)' è il tipo di target e non il tipo di source? – ArtB

+0

Esatto, avrei dovuto essere un po 'più chiaro a riguardo. –

0

ho usato questo per il cambiamento di massa del mio DB. Eseguilo, quindi copia tutte le righe, incolla nel campo query, rimuovi intestazione ed esegui.

cambio di motore, CHARSET e collazione di tutte le tabelle di DB = ITSD:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," ENGINE=INNODB, 
CHARSET=utf8, COLLATE=utf8_general_ci;") AS ExecuteTheString 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA="itsd" 
    AND TABLE_TYPE="BASE TABLE"; 

Converti CHARSET e collazione di tutte le tabelle nel DB = ITSD:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," CONVERT TO 
CHARACTER SET utf8;") AS ExecuteTheString 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA="itsd" 
    AND TABLE_TYPE="BASE TABLE"; 

Modifica tutti i campi di testo per VARCHAR (255) di tutte le tabelle in DB = itsd:

SELECT CONCAT('ALTER TABLE ', table_schema, '.', table_name, ' MODIFY COLUMN ', 
column_name, ' VARCHAR(255);') 
FROM information_schema.columns 
WHERE TABLE_SCHEMA = 'itsd' 
    AND DATA_TYPE = 'text' 
    AND TABLE_TYPE="BASE TABLE"; 
Problemi correlati