【问题标题】:Get value from ODCIVARCHAR2LIST at a specific index position (in a SQL query)从 ODCIVARCHAR2LIST 在特定索引位置获取值(在 SQL 查询中)
【发布时间】:2022-06-12 03:36:00
【问题描述】:

我正在尝试了解 Oracle 18c 中的 ODCIVARCHAR2LIST。

通过以下列表,如何获取特定索引位置的值(在 SQL 查询中)?

例如,获取列表中的第二个值:b

select 
    sys.odcivarchar2list('a', 'b', 'c') as my_list
from 
    dual

我的理解是:

在 SQL 中不能直接按索引提取列表元素,像这样:

select
    my_list(2)
from
    cte

ORA-00904: "MY_LIST": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 8 Column: 5

【问题讨论】:

    标签: sql oracle oracle18c


    【解决方案1】:

    一种选择是:

    使用自定义 PL/SQL 函数按索引提取列表元素。

    with 
    function get_list_val(my_list sys.odcivarchar2list, idx pls_integer) return varchar2
    is
    begin
      return my_list(idx);
    end;
    
    cte as (
    select 
        sys.odcivarchar2list('a', 'b', 'c') as my_list
    from 
        dual)
        
    select
        get_list_val(my_list, 2)
    from
        cte
    

    我很乐意听到任何问题或改进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 2018-08-27
      • 1970-01-01
      • 2015-02-22
      • 2019-08-11
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多