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

10-44 バイト数に応じた0埋め

SQLパズル

任意の文字列が、3バイト未満なら、
左に0埋めを行って、3バイトにして出力する。

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


SQL

select Val as 変換前,
case when Val is null      then LPad('0',3,'0')
     when Lengthb(Val) < 3 then LPad(Val,3,'0')
else Val end as 変換後
from (select '1' as Val from dual
union select '12'     from dual
union select '123'    from dual
union select '1234'   from dual
union select '1234あ' from dual
union select '123あ'  from dual
union select '12あ'   from dual
union select '1あ'    from dual
union select 'あ'     from dual
union select null     from dual);


解説

Lengthb関数でバイト数を求めて、3バイト未満だったら
LPad関数で0埋めしてます。