我需要搜索邮件ID是否在逗号分隔的ID组中可用。
我正在尝试使用以下代码。
它也显示“可用”的不可用ID。
CREATE OR REPLACE PROCEDURE sample
AS
email_id VARCHAR2(1000);
mail VARCHAR2(100);
BEGIN
email_id := 'robin@gmail.com, gilbert@rediff.com, osborn@yahoo.com, allwyn@gmail.com, chris@yahoo.com';
mail := 'chris@gmail.com';
IF (INSTR(email_id, mail) IS NOT NULL) THEN
dbms_output.PUT_LINE('available');
ELSE
dbms_output.PUT_LINE('sorry');
END IF;
END sample;
它无法正常工作。请帮帮我。
答案 0 :(得分:3)
INSTR()
将返回0
,如果它没有在源中找到匹配的子字符串(除非输入本身为NULL)。因此,当您检查NOT NULL
时,它始终返回TRUE
。
如果找到匹配的子字符串,它将返回源中子字符串的位置。(NUMBER)
因此,对于您的情况,LIKE
或REGEXP_LIKE
应该有所帮助。你还可以去下面。
if(INSTR (EMAIL_ID, MAIL) > 0)
then
DBMS_OUTPUT.PUT_LINE('available');
else
DBMS_OUTPUT.PUT_LINE('sorry');
end if;
Documentation来自Oracle。
答案 1 :(得分:1)
Hi i guess instead of declaring a full new variable and then using just use LIKE
operator. I think it should resolve your query.
DECLARE
lv_var VARCHAR2(100);
BEGIN
lv_var:='avra14march@gmail.com,shubhojitr@yahoo.co.in';
IF lv_var LIKE '%avra%' THEN
dbms_output.put_line('Available');
ELSE
dbms_output.put_line('Sorry');
END IF;
END;
OUTPUT
------------------------------------------------
anonymous block completed
Available
------------------------------------------------