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

10-133 文字列が4桁までの整数か調べる

SQLパズル

テーブル
     Val
--------
   10000
      あ
       0
       9
     123
9999
1234

Valが0以上9999以下の整数か調べる

10E1
10.0
+10
-0
などは、考慮しないこととする

出力結果
     Val  test
--------  ----
   10000  NG
      あ  NG
       0  OK
       9  OK
     123  OK
9999  OK
1234  OK

こちらを参考にさせていただきました


SQL

select Val,
case when LTrim(to_single_byte(Val),'0123456789') is null
      and Length(Val) <=4
     then 'OK' else 'NG' end as test
from (select '10000' as Val from dual
union all select 'あ' from dual
union all select '0' from dual
union all select '9' from dual
union all select '123' from dual
union all select '9999' from dual
union all select '1234' from dual);


解説

to_single_byte関数で半角に変換し、
LTrim関数を使ってます