トップページに戻る
次の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関数を使ってます