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

时间:2013-05-01 21:15:10

标签: mysql

我有一个不适合默认varchar(255)的派生列,所以我想把它作为一个中间文本。怎么能实现呢?

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

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

2 个答案:

答案 0 :(得分:2)

您可以在create table部分中指定列类型,然后只需使用相同的列名选择值即可将其插入匹配列中;

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

答案 1 :(得分:1)

你不需要做任何特别的事情。 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)