Как конвертировать типы полей MySQL? - PullRequest
3 голосов
/ 16 ноября 2009

Я уже сталкивался с функцией преобразования. Насколько я понимаю, основной синтаксис:

select convert(columnName, targetFieldType) as newColumnName from table;

Выполнение этой команды не дает никаких ошибок, но когда я проверяю типы данных, они остаются неизменными. Даже когда я использую commit; данные остаются без изменений. В частности, я пытаюсь преобразовать данные с длинным типом в varchar. Есть идеи?

Ответы [ 2 ]

4 голосов
/ 16 ноября 2009

Данный запрос SELECT будет возвращать значение в новом типе, но не меняет тип поля таблицы в вашей базе данных.

Если вы хотите навсегда изменить таблицу на диске, используйте:

ALTER TABLE table CHANGE columnName newColumnName targetFieldType NOT NULL;

Обратите внимание, что для больших таблиц это может занять некоторое время, поскольку MySQL переписывает всю таблицу.

Примечание: удалите квалификатор NOT NULL, если вы также хотите разрешить значения NULL в этом столбце.

Для получения дополнительной информации см. Синтаксис ALTER TABLE в Справочном руководстве MySQL .

1 голос
/ 19 ноября 2009

Обратите внимание, что вы можете легко преобразовать что угодно в тип символов, используя CONCAT:

select concat(columnName,'') as newColumnName from table;

Фактический синтаксис, который вы хотите для CONVERT, выглядит следующим образом:

select convert(columnName, char) as newColumnName from table;

Нет доступного типа varchar для CONVERT или CAST, но результатом должен быть приведение к типу char без указания длины поля.

...