Oracle 如何在pl/sql中搜索字符串
我需要在以逗号分隔的id组中搜索邮件id是否可用 我正在尝试以下代码 它还显示不可用ID的“可用”Oracle 如何在pl/sql中搜索字符串,oracle,plsql,substring,Oracle,Plsql,Substring,我需要在以逗号分隔的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@
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;
它不能正常工作。请帮帮我。INSTR()
将返回0
,如果它在源代码中找不到匹配的子字符串(除非输入本身为NULL)。因此,当您检查notnull
时,它总是返回TRUE
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
------------------------------------------------
如果找到匹配的子字符串,它将返回子字符串在源中的位置。(数字)
因此,对于您的情况,LIKE
或REGEXP\u LIKE
应该会有所帮助<你仍然可以选择下面的方法
if(INSTR (EMAIL_ID, MAIL) > 0)
then
DBMS_OUTPUT.PUT_LINE('available');
else
DBMS_OUTPUT.PUT_LINE('sorry');
end if;
从Oracle。INSTR()
将返回0
,如果它在源中找不到匹配的子字符串(除非输入本身为NULL)。因此,当您检查notnull
时,它总是返回TRUE
如果找到匹配的子字符串,它将返回子字符串在源中的位置。(数字)
因此,对于您的情况,LIKE
或REGEXP\u LIKE
应该会有所帮助<你仍然可以选择下面的方法
if(INSTR (EMAIL_ID, MAIL) > 0)
then
DBMS_OUTPUT.PUT_LINE('available');
else
DBMS_OUTPUT.PUT_LINE('sorry');
end if;
来自Oracle。User
like
operator。您可以这样做。Userlike
operator。您可以这样做。@CDurai很高兴它能起作用,如果它对您有帮助,您能接受答案吗?:)@CDurai这个答案总是比新接受的答案好@我很高兴它能起作用,如果它对你有帮助,你能接受这个答案吗?:)@CDurai这个答案总是比新接受的答案好!你好我很高兴它帮助了你。你能告诉我答案吗:)嗨。我很高兴它帮助了你。你能告诉我答案吗:)