Thursday, November 23, 2006

Compare strings

<質問内容>
SQL文で文字列の比較をしたい。
 比較条件として 文字列 A と 文字列 B の どこか2文字が一致すれば
 真として、レコードが返るようにしたい。
 どのような条件指定を行えばよいか。

 ・Windows2000 / R8.1.7
 ・文字列長 不定 (最大100文字程度)
 ・合致箇所 不定 (先頭2文字 や 末尾 2文字 ではなく、どこか2文字としたい)


<回答内容>
The function created by the following script can help you do what you want.
The return value 1 means TRUE and 0 means FALSE.
Please note that this function is case-sensitive.
--------------------------------------------------------------------------------
create or replace function compare(sA in varchar2, sB in varchar2)
return varchar2
is result varchar2(200);
begin
if (length(sA)>=2) then
for n in 1..length(sA) loop
select to_char(count(*)) into result from dual where sB like '%'||substr(sA,n,2)||'%';
if result='1' then
result:=sA;
return(result);
end if;
end loop;
end if;
result:='Not match';
return(result);
end;
/



--------------------------------------------------------------------------------

For example:

SQL> select compare('abcdefghijklmnopqrstuvwxyz','11111111111111de111111111111')

2 as flag from dual;



FLAG

----------
1



SQL> select compare('abcdefghijklmnopqrstuvwxyz','12345678901234567890')

2 as flag from dual;



FLAG

----------

0

No comments: