#ARRAY_LENGTH

array_length
ARRAY_LENGTH ( array_var , dimension )

ARRAY_LENGTH函数对数组(数组变量数组对象数组类型)array_var计算按dimension指定维度的数组长度(即成员数量),返回一个INT类型的数值。

本函数遵循如下规则:

该函数不支持向量化计算。

array_var

一个已初始化的数组变量,不可为NULL。

dimension

数组维度,即数组嵌套深度,为一个通用表达式,其值类型必须为INT(超过INT值域范围时报错)。

  • 当dimension为NULL时,函数返回NULL。
  • 数组嵌套深度从1开始,当dimension小于1或者大于最大深度时,函数返回NULL。
  • 当在同一dimension存在多个数组时,函数返回最长的数组长度。

示例

--单层数组
SELECT ARRAY_LENGTH(STRING_TO_ARRAY('a,b,c,d,e', ','), 1) len FROM DUAL;
         LEN 
------------ 
           5

SELECT ARRAY_LENGTH(STRING_TO_ARRAY('a,b,c,d,e', ','), NULL) len FROM DUAL;
         LEN 
------------ 
            

SELECT ARRAY_LENGTH(STRING_TO_ARRAY('a,b,c,d,e', ','), -1) len FROM DUAL;
         LEN 
------------ 
            
            
--多层数组
SET serveroutput ON
DECLARE
  TYPE arr_type_2 IS VARRAY(10) OF CHAR(5);
  TYPE arr_type_1 IS VARRAY(10) OF arr_type_2;
  b arr_type_1;
BEGIN
    b := arr_type_1(STRING_TO_ARRAY('a1,b1,c1', ',')
                    ,STRING_TO_ARRAY('a2,b2', ',')
                    ,STRING_TO_ARRAY('a3,b3,c3,d3', ','));
    DBMS_OUTPUT.PUT_LINE('Dimension 1 has:'||ARRAY_LENGTH(b,1));
    DBMS_OUTPUT.PUT_LINE('Dimension 2 has:'||ARRAY_LENGTH(b,2));
END;
/
Dimension 1 has:3
Dimension 2 has:4
pdf-btn 下载文档
copy-btn 复制链接