我有一个数据数组,可用来从表中选择行。为此,我在where子句中使用operator的成员。我想知道是否可以通过使用Like运算符和operator成员来做到这一点。
当我的阵列包括{德里,孟买,加尔各答} 我选择在其行中具有这三个值的行。 这是我的方法:
select ...
Into...
From xyz where city member of array;
///Receiving the array from an in parameter of the stored procedure.
它工作得很好。
但是如果my array has {Del, Mum, Kolk} //parts of the actual names
我如何将此数组用于相同的目的,也许使用Like运算符。
Create or replace zz2(ar in array_collection, c out sys_refcursor)
Is
anotherabc tablename.city%type
Begin
Open c
For
Select ABC
Into anotherabc
From tablename where city member of ar;
End zz2;
我希望输出的所有行中的城市都以数组中的字母/字符开头。使用运算符成员
答案 0 :(得分:1)
像这样吗?
Select ABC
Into anotherabc a
From tablename WHERE EXISTS
( select 1 FROM ( select column_value as city
FROM TABLE(ar) ) s where a.city like s.city||'%' )
答案 1 :(得分:0)
没有直接方法将LIKE
与MEMBER OF
一起使用。
如果这是您的集合中包含城市名称的前三个字符的协议,那么您可以使用substr()
仅匹配MEMBER OF
中的前三个字符。
尝试以下操作:
DECLARE
TYPE t_tab IS TABLE OF varchar(3);
l_tab1 t_tab := t_tab('Del','Mom','Kol');
BEGIN
DBMS_OUTPUT.put('Is ''Delhi'' MEMBER OF l_tab1? ');
IF SUBSTR('Delhi',1,3) MEMBER OF l_tab1 THEN -- note the use of SUBSTR here
DBMS_OUTPUT.put_line('TRUE');
ELSE
DBMS_OUTPUT.put_line('FALSE');
END IF;
END;
/
干杯!