トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

2-2-9 case式とLike演算子

SQLパズル

任意の文字列に、
aaaaという文字列が含まれていたら1、含まれてなかったら0
を取得する。


SQL

--■■■Like述語を使う方法■■■
select Val,case when Val Like '%aaaa%' then 1 else 0 end as IsMatch
from (select 'aaa' as Val from dual
union select 'aaaa'  from dual
union select 'aaaaa' from dual
union select 'aaaac' from dual
union select 'bb'    from dual
union select 'caaaa' from dual)
order by Val;

--■■■RegExp_Like述語を使う方法(10g以降)■■■
select Val,case when RegExp_Like(Val,'a{4}') then 1 else 0 end as IsMatch
from (select 'aaa' as Val from dual
union select 'aaaa'  from dual
union select 'aaaaa' from dual
union select 'aaaac' from dual
union select 'bb'    from dual
union select 'caaaa' from dual)
order by Val;


解説

case式とLike述語もしくは、RegExp_Like述語を組み合わせると
文字列がパターンにマッチする、しないでの分岐が可能です。