16bit!

エンジニアじゃなくなっちゃった人が何かを書くブログ

【SQL】文字列の切り出し抽出方法

SQLで文字列型のカラムから指定した文字数だけを切り出して抽出する方法です。
使う場面としては以下のような場面が有り得るかなと思います。

<使用場面例>
・抽出結果を外部システムにインポートするが、その桁数制御のために長すぎる文字列は途中までで切り捨てたい
・営業所コードの1~2文字目までが所在都道府県を、3~6桁目が市区町村を表しており、別々に抽出したい
など


方法としては、"substr(カラム名, 開始位置, 文字数)"(または"substrb")を使います。

select
  substr(eigyousho_name, 1, 30) as "営業所名",
  substr(eigyousho_code, 1, 2) as "所在都道府県コード",
  substr(eigyousho_code, 3, 6) as "所在市区町村コード",
from
  eigyosho

ちなみに、開始位置から最後までを切り出す場合には文字数は省略できます。

また、"substr"は文字数での範囲指定ですが(日本語対応もしています)、
バイト数での範囲指定を行いたい場合には"substrb"を使うことができます。
使用例の1つ目なんかについては、こちらの方が妥当でしょう。


終わり。