トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
4-1 文字の検索
SQLパズル
テーブル
キー 検索項目
---- --------------
A001 01,03,06,09
A002 01
A003 null
A004 01,02,03,05,10
A005 03,08,10
検索項目は、01、02、03、04、05、06、07、08、09が、
カンマ区切りでセットされている
条件ア 01が含まれる
条件イ 01と03が含まれる
条件ウ 01または08が含まれる
として条件を満たすかを出力する
出力結果
キー 検索項目 ア イ ウ
---- -------------- ------ ------ ------
A001 01,03,06,09 True True True
A002 01 True False True
A003 null False False False
A004 01,02,03,05,10 True True True
A005 03,08,10 False False True
こちらを参考にさせていただきました
SQL
select キー,検索項目,
case when position('01' in 検索項目) > 0 then 'True' else 'False' end as ア,
case when 検索項目 ~ '^(?=.*01)(?=.*03)' then 'True' else 'False' end as イ,
case when 検索項目 ~ '01|03' then 'True' else 'False' end as ウ
from (select 'A001' as キー,'01,03,06,09' as 検索項目
union select 'A002','01'
union select 'A003',null
union select 'A004','01,02,03,05,10'
union select 'A005','03,08,10') dummy;
解説
条件イのチェックに、正規表現の先読みを使ってます