おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

« VB.NET:FTPサーバへのアクセスでエラー発生(慌てたが、ログインユーザのパスワード期限切れ)について・覚え書き | メイン | パソコン作業で机が冷たいので食器棚クロスで対応 »

2017年11月29日 (水)

【Oracle SQL】SUBSTR関数でVBのRight、Left関数の様な使い方

Oracleの関数には、VB.NETで用意されているRight関数Left関数が存在しません。 文字列の抽出で、左から何桁とか、右から何桁とかを切り出す処理はよくあるものです。 OracleではSUBSTR関数しかないので、これを使うしかありません。

SUBSTR関数の引数は以下の様になっています。

SUBSTR ( string , position [, length] )
SUBSTRB ( string , position [, length] )

・string:抽出元の文字列
・position:抽出開始位置(1~) 
 (負の場合は右端から逆順に処理)
・length:抽出文字列長
・関数の戻り値:抽出文字列

SUBSTRは文字列をキャラクタ単位での処理を行い、 SUBSTRBは文字列をバイト単位での処理を行います。

文字列に漢字等のマルチバイト文字が含まれている場合にはSUBSTRBは問題があります。 文字コードがシフトJISの場合で例を示しますと以下の様になります。
SUBSTRは全角文字があっても、1文字は1文字として処理されます。 ただし、SUBSTRBは4つ目の例でも分かるように、漢字の泣き別れが発生し、 3桁目には半角の空白が返ってきます。
漢字の泣き別れの件はどうするのかは、テーブル設計や、出力する時に対応する様に するしかないと思います。
上の例の position のところをマイナスにすると以下の様になります。
文字列の最後からの処理になっているのが分かります。 さて、Right関数 Left関数 的な利用ですが、 Right関数 では position を 「1」として length に文字数を設定します。 Left関数 では position を文字数のマイナス値として length に文字数を設定します。 尚、番号などを先頭「0」付きで編集する場合、以下の様な使い方もあります。 TO_CHAR関数 でフォーマットを使えば2行目の様にできますが、 変換する数値が8桁より大きく、表示が下8桁のみの場合は1行目の方法も有用かと思います。

■関連ページ
OracleSQLの関数の中でよく使用するものその1
OracleSQLの関数の中でよく使用するものその2
OracleSQLの集計関数

Oracleの基本 ~データベース入門から設計/運用の初歩まで


楽天市場

トラックバック

このページのトラックバックURL:
http://app.mitelog.jp/t/trackback/459161/34095343

【Oracle SQL】SUBSTR関数でVBのRight、Left関数の様な使い方を参照しているブログ:

コメント

コメントを投稿