为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:麒麟V10
【CPU】:X86
【问题描述】*:客户需求,截取身份证字段的前四位作为分区列,如使用 SUBSTR(ID_CARD,1,4) 作为分区键
示例语句如下:
CREATE TABLE example_table (
id INT,
id_card VARCHAR(18),
other_data VARCHAR(50)
)
PARTITION BY LIST (SUBSTR(id_card, 1, 4))
(
PARTITION p_1101 VALUES ('1101'),
PARTITION p_1102 VALUES ('1102'),
PARTITION p_default VALUES (DEFAULT)
);
可以用虚拟列功能实现这个需求
分区表的分区字段不允许使用函数,不过可以用这种方式实现:
CREATE TABLE example_table
(
id INT,
id_card VARCHAR(18),
id_card_prefix VARCHAR(4) GENERATED ALWAYS AS (SUBSTR(id_card, 1, 4)) VIRTUAL,
other_data VARCHAR(50)
)
PARTITION BY LIST
(
id_card_prefix
)
( PARTITION p_1101 VALUES ('1101')
, PARTITION p_1102 VALUES ('1102')
, PARTITION p_default VALUES (DEFAULT)
);