oracle11g如何按照列的一部分进行分区,求思路,谢谢。

0

oracle11g可以按照列的一部分进行分区吗,如何做?
具体说:有一张表test
ID varchar2(50),
name varchar2(500),
mac varchar2(100)

ID中存储类似“1000020002”,“100000232323”,‘2000002222’,能都根据ID列的第一个字符,如果是1的在一个分区,是2的在另一个分区

如果此种方案可行,该如何操作。
已邀请:
1

老头子 - 专注是唯一的捷径 2015-10-26 回答

可以,oracle11g的虚拟列分区可以实现你的功能,我博客有个分区的文章,不过虚拟列没有详细介绍,语法:

CREATE TABLE test_ltz (
      ID varchar2(50),
      name varchar2(500),
      mac varchar2(100),
      id_partition CHAR(1) GENERATED ALWAYS AS (SUBSTRB(ID,1,1)) VIRTUAL
    )
    PARTITION BY RANGE(id_partition)
    (
    PARTITION P70         VALUES LESS THAN ('2'),
    PARTITION P80         VALUES LESS THAN ('3'),
    PARTITION P90         VALUES LESS THAN ('4'),
    PARTITION PDEFAULT VALUES LESS THAN(MAXVALUE)
   )

要回复问题请先登录注册