Oracleで文字列操作を極める:SUBSTR・INSTR・REPLACEの活用術

Oracle SQLで文字列を自在に扱えるようになると、データ抽出や整形が格段に効率化します。
本記事では、文字列操作の3大関数「SUBSTR」「INSTR」「REPLACE」の使い方をわかりやすく解説します。


1️⃣ SUBSTR:文字列の一部を取り出す

SUBSTRは指定した位置から任意の長さの文字列を切り出す関数です。

🔸 使用例

結果:

📘 ポイント

  • 開始位置は 1から数える

  • 第3引数(文字数)を省略すると、開始位置以降をすべて取得

  • 負の値を指定すると末尾からカウントされる

→ 結果:EF


2️⃣ INSTR:文字列の位置を検索する

INSTRは、指定した文字が出現する**位置(インデックス)**を返します。

🔸 使用例

結果:

→ 2つ目のカンマ「,」が4文字目にあることを示します。

📘 応用テクニック

INSTRSUBSTRを組み合わせることで、区切り文字を含む文字列から特定部分を抜き出すことが可能です。

結果:


3️⃣ REPLACE:文字列の置換を行う

REPLACEは、指定した文字列を別の文字列に置き換える関数です。

🔸 使用例

結果:

📘 応用テクニック

REPLACEを使えば、不要な文字の削除も簡単に行えます。

結果:


4️⃣ 組み合わせテクニック:実用的な例

💡 メールドメインを抽出する例

結果例:

EMAILDOMAIN
user@example.comexample.com

💡 ファイル名から拡張子を削除

結果例:

FILE_NAMEBASE_NAME
report.xlsxreport

5️⃣ まとめ

関数用途主な特徴
SUBSTR部分文字列の取得開始位置・文字数指定が可能
INSTR指定文字の位置取得出現回数も指定可能
REPLACE文字列の置換不要文字の削除にも利用可能

これらを組み合わせることで、Oracle SQLでの文字列処理は自由自在になります。
ログ解析、ファイル名分割、メールドメイン抽出など、日常的な業務で大活躍する関数です。

Javaで日付をゼロパディング/ゼロサプレスする方法まとめ

Javaで日付を扱う際、「月や日を2桁表示したい(01→1ではなく01のまま)」あるいは「逆にゼロを削除して自然な表示にしたい」という場面はよくあります。
この記事では、**ゼロパディング(ゼロ埋め)ゼロサプレス(ゼロ削除)**の両方を、実際のコード例を交えて分かりやすく解説します。


🧩 ゼロパディングとは?

ゼロパディング(zero padding)とは、数値や日付を指定桁数に揃えるために先頭に0を追加する処理のことです。
例えば「1」を「01」や「001」に整えることで、フォーマットがそろい、ソートや表示が安定します。

例:

元の値ゼロパディング後
101
505
1010

💡 String.format() を使ったゼロパディング

最もシンプルな方法は String.format() です。
桁数を %02d のように指定することで、足りない桁を自動的に0で埋めてくれます。

ポイント:

  • %02d → 2桁に揃えて左側を0埋め

  • %03d → 3桁に揃える(例:007 など)


📅 DateTimeFormatter を使ったゼロパディング

LocalDateLocalDateTimeを使う場合は、DateTimeFormatterの書式指定でゼロパディングが自動適用されます。

MMddといった2桁指定をすることで、常にゼロパディングされた日付が得られます。


🔻 ゼロサプレス(ゼロ削除)とは?

ゼロサプレス(zero suppress)とは、先頭の0を削除して自然な表示にすることを指します。
たとえば「01月」を「1月」に、「09日」を「9日」に整形するようなケースです。


🧮 getMonthValue()getDayOfMonth()を使う方法

LocalDateのメソッドを利用すれば、もともと整数型の値をそのまま出力できるため、ゼロサプレスした形で取得できます。


🧠 DecimalFormatで数値的に制御する

もし整数値を柔軟に扱いたい場合は、DecimalFormatを使うと便利です。

"00" → 常に2桁ゼロ埋め
"#" → 不要なゼロを省略(ゼロサプレス)


🔄 実用例:ゼロ埋め⇔ゼロ削除の切り替え

アプリケーションによっては、状況に応じて表示形式を切り替えたい場合もあります。


✅ まとめ

処理主な方法
ゼロパディングString.format("%02d") / DateTimeFormatter("MM")01, 05
ゼロサプレスgetMonthValue() / DecimalFormat("#")1, 5

ゼロパディングはフォーマットの統一やログ整形に便利で、ゼロサプレスは人が読む表示に適しています。
目的に応じてどちらを使うか選びましょう。