我想选择一个数据,想看看哪个分区。
分区列是:code(varchar column)
Select .... -- I want to find partition name
from
partition_table
where to_number(code) = 55;
为什么我需要这个:
我有一个代码是' 55'但是当我使用分区列时,在该表中我不选择它。但有数据的价值是' 55'
所以我想要分区中的数据。
数据不在 PDEFAULT 分区中。我已经检查过了。
数据在另一个分区中。我认为交换分区过程存在问题
提前致谢
答案 0 :(得分:1)
有两种方法。
1)rowid将指向分区对象
SQL> create table t ( x int, y int )
2 partition by range (x )
3 ( partition p1 values less than ( 100 ),
4 partition p2 values less than ( 200 )
5 );
Table created.
SQL>
SQL> insert into t values (34,34);
1 row created.
SQL>
SQL> select rowid from t;
ROWID
------------------
AAA0cqAAHAAAAQ6AAA
1 row selected.
SQL>
SQL> select dbms_rowid.rowid_object(rowid) from t;
DBMS_ROWID.ROWID_OBJECT(ROWID)
------------------------------
214826
1 row selected.
SQL>
SQL> select subobject_name
2 from user_objects
3 where data_Object_id =
4 ( select dbms_rowid.rowid_object(rowid) from t );
SUBOBJECT_NAME
------------------------------------------------------------
P1
2)您可以挖掘字典数据以探测USER_TAB_PARTITIONS中的HIGH_VALUE列。我在这里做了一个关于如何做到这一点的视频