大佬们,构建分区键时可以嵌套函数吗, 如: partition by list(MOD(CAST(列名varchar类型 AS SIGNED), 10)) ,表中有个varchar类型想作为分区键,内容如 “20020200520000001”,想通过转bigint后再进行MOD作为分区键,不知怎么处理了,爆不支持函数
【 使用环境 】测试环境
【 OB or 其他组件 】dbeaver
【 使用版本 】ob: 3.2.3 企业版
【执行sql如下】:
CREATE TABLE t_imcore_chat_0
(
chat_no
varchar(32) NOT NULL COMMENT '会话编号 ',
chat_biz_no
varchar(128) DEFAULT NULL COMMENT ‘会话业务编号’,
chat_name
varchar(64) DEFAULT NULL,
create_uid
varchar(64) DEFAULT NULL COMMENT ‘创建人UID’,
chat_type
varchar(32) DEFAULT NULL COMMENT ‘会话类型’,
max_id
int(11) DEFAULT NULL COMMENT ‘会话当前最大ID’,
message_num
int(11) DEFAULT NULL COMMENT ‘消息总数’,
last_chat_time
bigint(20) DEFAULT NULL COMMENT ‘会话最后消息时间’,
receiver_num
int(11) DEFAULT NULL COMMENT ‘接收人数量’,
msg_curr_seq
int(11) DEFAULT NULL COMMENT ‘会话消息当前序号’,
user_curr_seq
int(11) DEFAULT NULL COMMENT ‘会话用户当前序号’,
memo
varchar(255) DEFAULT NULL,
gmt_created
datetime DEFAULT NULL,
gmt_modified
datetime DEFAULT NULL,
state
int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘状态字段,从右到左,首位标识新用户是否允许读取历史消息’,
PRIMARY KEY (chat_no
),
UNIQUE KEY idx_chat_biz_no_unq
(chat_biz_no
) BLOCK_SIZE 16384 GLOBAL,
KEY idx_gmt_last_chat
(last_chat_time
) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 TABLEGROUP = ‘tb_chat_no’
partition by list(MOD(CAST(chat_no AS SIGNED), 10))
(partition P0 values in (0),
partition P1 values in (1),
partition P2 values in (2),
partition P3 values in (3),
partition P4 values in (4),
partition P5 values in (5),
partition P6 values in (6),
partition P7 values in (7),
partition P8 values in (8),
partition P9 values in (9));
【报错内容】:SQL 错误 [1564] [HY000]: This partition function is not allowed