トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
3-19 同じ文字が二文字以上存在するかチェック
SQLパズル
テーブル
Val
----
aaaa
abc
arg
ddff
efge
同じ文字が二文字以上存在するかチェックする
出力結果
Val 重複有無
---- --------
aaaa 重複あり
abc 重複なし
arg 重複なし
ddff 重複あり
efge 重複あり
SQL
with WorkView as (select 'aaaa' as Val from dual
union select 'abc' from dual
union select 'ddff' from dual
union select 'arg' from dual
union select 'efge' from dual),
CounterView as(
select RowNum as Counter
from all_catalog
where RowNum <= (select max(Length(Val)) from WorkView))
select Val,
case when exists(select 1 from CounterView b
where instr(a.Val,substr(a.Val,b.Counter,1),1,2) > 0)
then '重複あり' else '重複なし' end as 重複有無
from WorkView a;
解説
instr関数の第四引数に2を指定して、
同じ文字が二文字以上存在するかチェックしてます