繁体   English   中英

如何在MySQL中为派生列指定列类型和长度

[英]How to specify column type and length for a derived column in mysql

我有一个派生的列,该列不适合默认的varchar(255),所以我想将其设置为中文字。 如何实现?

 create table app_meta_v as select concat_ws('|',a.platform,
   category,category_level,appid) rowkey (mediumtext) from app_meta;

中文本当然是语法错误:正确的是什么?

您可以在创建表部分中指定列类型,然后使用相同的列名称选择值以将其插入匹配的列中。

CREATE TABLE app_meta_v (rowkey MEDIUMTEXT) AS 
  SELECT CONCAT_WS('|',a.platform, category, category_level, appid) rowkey
FROM app_meta;

您不必做任何特别的事情。 CONCAT_WS会自动调整列的大小以匹配数据中最长的字符串。

例:

create table abc(def varchar(255));
insert into abc values ('abcdefghijkl');
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
update abc set def=concat(def,def);
select * from abc;

在此阶段,您可以看到“ def”最大为255个字符。

create table abc2 as select concat_ws(',', def, def) def from abc;

然后,当您检查表abc2中的列def时,它将显示varchar(511)

show columns from abc2

------------------------
Field    | Type
------------------------
def      | varchar(511)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM