我们有一个字段,用于在tinyint
(1)列中存储数据(例如1,0),我必须将其移动到text
列,并且一个简单的转换将数据存储在带有额外空格的文本字段,而不仅仅是1或0.我应该如何正确地执行此操作?
create table A (id, foo tinyint(1));
create table B (id, bar text);
我正在尝试使用导致转换问题的insert into B (id, bar) select id, foo from A;
将A的所有元素复制到B中。
答案 0 :(得分:0)
MySQL掌握隐式转换。由于您将数字转换为字符串类型,因此我没有发现任何可能发生的问题。因此,像UPDATE table1 SET text_column = CONCAT(' ',tinyint_column,' ')
这样的东西应该有效。
答案 1 :(得分:0)
您的insert语句没有任何问题。问题在于MySQL比较字符串的方式。
即使以下查询也会匹配:
SELECT * FROM B where TRIM(bar) = '1 ';
以下工作正常(IE,不匹配):
SELECT * FROM B where bar LIKE '1 ';