這看起來很簡單,但我無法在文檔中找到答案。獲取VARRAY集合中的元素索引
與嵌套表一樣,我們可以使用TABLE()
和COLUMN_VALUE
僞列作爲變量。
create or replace type NUMBER_ARRAY as VARRAY(10) of NUMBER;
create table TAB_WITH_ARRAY(
ID NUMBER,
VALS NUMBER_ARRAY)
insert into TAB_WITH_ARRAY
select 1, NUMBER_ARRAY(1,2)
from dual
union all
select 2, NUMBER_ARRAY(1,2,3,4,5)
from dual
select t.id, c.column_value
from TAB_WITH_ARRAY t,
table(t.vals) c
然而,與嵌套表,VARRAY
是一個有序的集合類型,我想保留這個順序。有沒有辦法獲得不僅價值,而且還有SQL中每個元素的索引?
是的,在我的測試中輸出的順序是正確的,我可以只使用ROW_NUMBER
與我主表PARTITION BY
主鍵生成索引,但經驗告訴我不要依靠排序,除非手動指定它。
那麼有沒有一種內置的方式來訪問數組中的元素的索引?
的可能的複製[我如何獲得的VARRAY項指標轉換爲表格後(https://stackoverflow.com/questions/10559647/how- do-i-get-the-index-of-varray-items-after-conversion-to-a-table) –
謝謝@SudiptaMondal,這非常接近。但是,我很想看到1)完全的SQL解決方案,2)可以與一列數組一起工作的解決方案,而不是一個數組。 –
也相關:https://stackoverflow.com/q/16713002/458741 – Ben