如何解决在mysql中创建表时更改列数据类型
我正在使用选择查询从现有表中创建新表。现有的表列的数据类型为varchar(255),因此在新创建的表中,该列包含默认的varchar数据类型。
现在如何将新表列更改为其他数据类型TEXT。这是mysql查询。尝试使用cast()和convert(),但不适用于TEXT数据类型
findBy
我想要TEXT数据类型的“信息”列。
感谢您的帮助。
解决方法
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
的表格后,您可以通过以下方式将其更改为TEXT
ALTER TABLE t
MODIFY COLUMN x TEXT NOT NULL;
您可以从VARCHAR
转到TEXT
,反之亦然;请注意,由于它们具有不同的“最大大小”,您可能会被截断。做SHOW WARNINGS
;运行ALTER
之后。
此外,请确保包括所有额外的子句(NULL,CHARSET等)。
考虑这些问题和类似问题的另一种方法是逻辑,将数据作为字符串转储,然后插入。即,将应用对字符串的任何转换。实际上,不需要CAST / CONVERT,至少不需要在TEXT和VARCHAR之间。
,首先执行CREATE TABLE,然后执行INSERT SELECT。像这样的东西。
CREATE OR REPLACE TABLE topper (
Name VARCHAR(255),Roll_No INT,Information TEXT
);
INSERT INTO topper (Name,Roll_No,Information)
SELECT studentname as `Name`,description as `Information`
FROM student;
这是一个好习惯,因为它使您可以根据需要明确表的数据类型。这也很好,因为它允许您在新表中指定索引,主键和排序规则。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。