Как преобразовать столбец типа TEXT в VARCHAR?

Можно ли легко преобразовать столбец с данными в нем как TEXT в VARCHAR(X)? Нет существующих записей в столбце больше, чем X.

Ответы

Ответ 1

Да, конечно

ALTER TABLE table_name MODIFY column_name VARCHAR(X)

Ответ 2

Для MS SQL:

ALTER TABLE table_name
ALTER COLUMN column_name datatype(value)

Для MySQL

ALTER TABLE table_name
MODIFY column_name datatype(value)

Ответ 3

Я использовал это для массового изменения моей БД. Выполните его, затем скопируйте все строки, вставьте в поле запроса, удалите заголовок и запустите.

Измените ДВИГАТЕЛЬ, CHARSET и COLLATION всех таблиц в DB = thed:

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";

Преобразование CHARSET и COLLATION всех таблиц в DB = thed:

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";

Измените все поля TEXT на VARCHAR (255) всех таблиц в DB = thed:

 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";