我已经遇到过转换功能。据我了解,基本语法是:
select convert(columnName, targetFieldType) as newColumnName from table;
运行此命令不会给我任何错误,但是当我检查数据类型时它们没有改变。即使我使用commit;数据保持不变。特别是,我正在尝试将long类型的数据转换为varchar。有什么想法吗?
答案 0 :(得分:4)
给定的SELECT
查询将返回新类型中的值,但它不会更改数据库中表的字段类型。
如果要永久更改磁盘上的表,请使用:
ALTER TABLE table CHANGE columnName newColumnName targetFieldType NOT NULL;
请注意,对于大型表,这可能需要一段时间,因为MySQL会重写整个表。
注意:如果您还想在此列中允许NULL值,请删除NOT NULL
限定符。
有关详细信息,请参阅ALTER TABLE Syntax in MySQL Reference Manual。
答案 1 :(得分:1)
请注意,您可以使用CONCAT轻松地将任何内容转换为字符类型:
select concat(columnName,'') as newColumnName from table;
CONVERT的实际语法如下:
select convert(columnName, char) as newColumnName from table;
CONVERT或CAST没有可用的varchar类型,但是在不给出字段长度的情况下转换为char应该是您想要的结果。