Как мне справиться с перемещением данных из tinyint в текстовое поле - PullRequest
0 голосов
/ 11 ноября 2011

У нас есть поле, в котором хранятся данные (например, 1, 0) в столбце tinyint (1), и мне нужно переместить его в столбец text, и простое преобразование сохраняет данные в текстовом поле с дополнительными пробелы вместо 1 или 0. Как мне сделать это правильно?

create table A (id, foo tinyint(1));
create table B (id, bar text);

Я пытаюсь скопировать все элементы A в B, используя insert into B (id, bar) select id, foo from A;, что вызывает проблему преобразования.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

В вашем заявлении на вставку нет ничего плохого. Проблема заключается в том, как MySQL сравнивает строки.

Даже следующий запрос будет соответствовать:

SELECT * FROM B where TRIM(bar) = '1   ';

Следующее работает правильно (т.е. не соответствует):

SELECT * FROM B where bar LIKE '1 ';
0 голосов
/ 11 ноября 2011

MySQL мастеров неявного преобразования.Поскольку вы конвертируете число в строковый тип, я не вижу проблем, которые могут возникнуть.Поэтому что-то вроде UPDATE table1 SET text_column = CONCAT(' ',tinyint_column,' ') должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...