どうやらOracleにはVB系にあるLEFT関数やRIGHT関数は用意されていないようだ。
LEFT関数は特に問題ないが、可変長データを扱って後ろ(右)から数文字取得したいというときにRIGHT関数が使えないのはかなり不便だ。
調べてみるとどうやらSUBSTR関数でもRIGHT関数のような書き方ができるらしい。
SUBSTR関数
SUBSTRは、文字列の一部を取り出す関数
SUBSTR(string, position [, length])
- string : 対象文字列
- position :取出したい文字の開始位置(負の場合は逆向きに数えた数)
- length : 開始位置から何文字目まで取得するか(文字列長)
SUBSTRの場合は、キャラクタ単位(全角半角関係なく、何文字取得するか決められる)で取得することができる。
バイト単位で取出したい場合はSUBSTRB関数を使用する。
SUBSTRB関数の注意点
SUBSTR(キャラクタ単位)の場合は、特に問題ないが、
SUBSTRB(バイト単位)の場合には注意が必要。
マルチバイト文字(漢字など)を扱う場合、以下のようになる。
SUBSTRB('全角キャラクタ', 2) → '_角キャラクタ'
※'_'は半角スペース
マルチバイト文字の途中から指定した場合は、スペースで代用されて取得される。
LEFT関数、RIGHT関数を使う
LEFT関数
LEFT(文字列, 3)をSUBSTRに置き換えるとSUBSTR(文字列, 1, 3)となる。
例)
SUBSTR('1234567890', 1, 3) → '123'
RIGHT関数
RIGHT(文字列, 3)をSUBSTRに置き換えるとSUBSTR(文字列, -3)となる。
例)
SUBSTR('1234567890', -3) → '890'
以上
0 件のコメント :
コメントを投稿