0

我有一个不适合默认 varchar(255) 的派生列,所以我想将其设为中文本。怎样才能做到这一点?

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

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

4

2 回答 2

2

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

CREATE TABLE app_meta_v (rowkey MEDIUMTEXT) AS 
  SELECT CONCAT_WS('|',a.platform, category, category_level, appid) rowkey
FROM app_meta;
于 2013-05-01T21:33:31.517 回答
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)
于 2013-05-01T21:26:18.117 回答