Я пытаюсь создать очищенную таблицу, которая заменяет поле varchar (50) целым числом. Исходное поле имеет случайные текстовые значения, которые я хотел бы преобразовать в 0 или нулевые значения. Я могу сделать это в инструкции select просто отлично, но получить ошибку при попытке создать мою таблицу.Преобразование текстового столбца в целое число в MySQL
Ниже приведен минимальный пример, который использует строку:
/* This works */
DROP TABLE IF EXISTS mytest;
CREATE TABLE mytest
AS
SELECT convert("123", unsigned) AS mynum;
/* This works, returning a row of 0 */
SELECT convert("TEST", unsigned) AS mynum;
/* But this fails, with: Truncated incorrect INTEGER value: 'TEST'*/
DROP TABLE IF EXISTS mytest;
CREATE TABLE mytest
AS
SELECT convert("TEST", unsigned) AS mynum;`
Что случилось с выше, и есть лучший способ добиться того, чего я хочу? Спасибо за помощь.
Это не работает. Изменение столбца возвращает все значения до 0. –
@ cassi.lup: Если значение в 'mytest.mynum' является числом, хранящимся в виде текста (например,« 23 »), то при изменении столбца он будет сохранен как целое число (например, 23). Если значение представляет собой строку (например, «foo»), то изменение типа данных на целое будет изменять значение до 0. Если значение представляет собой строку, которая начинается с числа (например, «23foo»), то изменение типа данных на целое будет сохраните значение как 23. В любом случае, поскольку ОП запросил метод, который поддерживал бы любые существующие целые числа и переводил бы текстовые значения в ноль, мой ответ правильный и не заслуживает нисходящего. – dnagirl