首页 > 解决方案 > 在mysql中创建表时更改列数据类型

问题描述

我正在使用选择查询从现有表创建新表。现有表列具有数据类型 varchar(255),因此在新创建的表中,该列默认包含 varchar 数据类型。

现在如何将新表列更改为其他数据类型 TEXT。这是mysql查询。尝试了 cast() 和 convert() 但不适用于 TEXT 数据类型

CREATE TABLE topper  AS
SELECT studentname as `Name`, rollno as `Roll_No`, description as `Information`
FROM student

我想要 TEXT 数据类型中的“信息”列。

谢谢你的帮助。

标签: mysqlselectmysql-workbenchcreate-tablesqldatatypes

解决方案


TEXT本质上是VARCHAR(...).

CREATE TABLE topper (
    Information TEXT NOT NULL,
) AS
SELECT studentname as `Name`, rollno as `Roll_No`, description as `Information`
FROM student;

请注意,您可以在CREATE. 处理将按名称匹配列,然后填写其余列。

或者...

拥有一张桌子后x VARCHAR(255) NOT NULL,您可以将其更改为TEXTvia

ALTER TABLE t
    MODIFY COLUMN x TEXT NOT NULL;

您可以从VARCHARtoTEXT或反之亦然;请注意,由于它们具有不同的“最大大小”,因此您可能会被截断。做SHOW WARNINGS; 运行后ALTER

此外,请务必包含所有额外的子句(NULL、CHARSET 等)。

考虑这些和类似问题的另一种方法是,从逻辑上讲,数据被转储为字符串,然后插入。也就是说,将应用与字符串之间的任何转换。实际上,不需要 CAST/CONVERT,至少在 TEXT 和 VARCHAR 之间不需要。


推荐阅读