13

我有一个字符串数组。我想检查数组中是否存在特定字符串。

DECLARE
  TYPE v_array IS TABLE OF VARCHAR2(200);
  ais_array v_array;
BEGIN
  ais_array := ('Lb1','Lb2','Lb3','Lb613');
  IF 'Lb1' IN ais_array THEN
     dbms_output.put_line('found');
  END IF;
END;

IN操作员不工作。我尝试select *对类型进行 a 然后使用IN,但这也不起作用。

有什么建议么?

4

2 回答 2

28

试用member of条件:

IF 'Lb1' member of ais_array THEN
  dbms_output.put_line('found');
END IF;

Oracle 在 10g 中引入了几个用于处理集合的集合运算符。请阅读文档以了解更多信息

于 2013-01-29T12:30:01.327 回答
1

MEMBER OF 只能用于嵌套表。您正在尝试在关联数组上使用它。您将收到一个错误“在调用 'MEMBER OF' 时参数的数量或类型错误”。

这是如何使用它:

    DECLARE  
   TYPE clientele IS TABLE OF VARCHAR2 (64);  

   client_list_12    clientele := clientele ('Customer 1', 'Customer 2');  
   client_list_13    clientele := clientele ('Customer 1', 'Customer 3');  

   client_list_133   clientele  
                   := clientele ('Customer 1', 'Customer 3', 'Customer 3');  

   client_list_empty clientele := clientele ();                          
BEGIN  
   IF 'Customer 1' MEMBER OF client_list_12  
   THEN  
      DBMS_OUTPUT.put_line ('Customer 1 is in the 12 list');  
   END IF;  

   IF 'Customer 2' NOT MEMBER OF client_list_13  
   THEN  
      DBMS_OUTPUT.put_line ('Customer 2 is not in the 13 list');  
   END IF;  

   DBMS_OUTPUT.put_line ('List 133 contains ' || CARDINALITY (client_list_133) || ' items');  

   IF client_list_empty IS EMPTY  
   THEN  
      DBMS_OUTPUT.put_line ('Client list is empty');  
   END IF;  

   IF client_list_133 IS NOT EMPTY  
   THEN  
      DBMS_OUTPUT.put_line ('Client list 133 is not empty');  
   END IF;  

END; 
于 2019-05-03T21:14:56.490 回答