「Androidは電気羊の夢を見るか」を読みたい管理者のブログ

仕事などでの色々な発見を記事にしてます。不定期更新。

Oracle一行関数まとめ(文字列関数編)

はじめに

前回
bignight.hatenablog.com
に引き続きOracleの一行間数を取り上げようと思います。今回は文字列操作編です。
OracleDataBaseMaster Bronzeの教科書を下敷きとしてます。
ここら辺は知ってるかどうかで特典に大きく差がつくので確実に取っておきたいですね。
年末年始休日中に白本に移れるかしら。

文字列関数

LENGTH

LENGTH(文字列)…文字列の長さを返します。バイト数ではなく文字数を返します。バイト数を求めたければLENGTHB関数を使用します。

INSTR

INSTR(文字列1,文字列2,[m,n])…文字列1のn番目の文字から文字列2の探索を開始し、文字列2がm番目に表れる位置を返します。
たとえば
"this is a pen"
という文字列があったとしてaが出てくる位置を取得したければ
INSTR('this is a pen',a)
iが2番目に出てくる位置を取得したければ
INSTR('this is a pen',a,0,2)

SUBSTR

SUBSTR(文字列,n,[m])…文字列のn番目の文字からm文字の長さの文字列を抜き出して返す。
たとえば
"this is a pen"
という文字列があったとして最初の4文字いらないと思えば
SUBSTR('this is a pen',4)
最後の3文字がいらないと思えば
SUBSTR('this is a pen',0,3)

INITCAP

INITCAP(文字列)…各単語の最初の文字を大文字、残りの文字を小文字にして返します。
たとえば
"this is a pen"
を入力すれば結果は
"This Is A Pen"
になります。

UPPER

UPPER(文字列)…文字列を大文字にして返す。これは簡単ですね。
たとえば
"this is a pen"
を入力すれば結果は
"THIS IS A PEN"
になります。

LOWER

LOWER(文字列)…UPPERの反対です。文字列を小文字にして返します。
たとえば
"THIS is A pen"
を入力すれば結果は
"this is a pen"
になります。

CONCAT

CONCAT(文字列1,文字列2)…文字列1と文字列2を結合して1つの文字列を返します。
たとえば
"this is a pen."
"and this is yours."
という二つの文字列を入力したならば
"this is a pen.and this is yours."
という一つの文字列になります。

LPAD

LPAD(文字列,n[,パディング文字])…文字列1を、n桁になるように左にパディング文字を埋めて返します。パディング文字は省略することができ、デフォルト値は空白となります。
LPAD(給与,10,'_')
とすれば

____250000
____350000

などなど

RPAD

RPAD(文字列,n[,パディング文字])…文字列を、n桁になるように右にパディング文字を埋めて戻します。LPADでは左だったのが右になっただけですはい。
結果例
250000____
350000____

TRIM

TRIM([param][文字列1 FROM]文字列2)
paramとしては

LEADING TRAILING BOTH
先頭 最後 両方

からそれぞれ文字列1を取り除きます。
たとえば
TRIM(BOTH '日' FROM 日曜日)
とやれば

が返ってきます。

REPLACE

REPLACE(文字列1,文字列2[,文字列3])…文字列1の中から文字列2を探し、文字列3に置換します。文字列3を省略した場合は文字列1から全ての文字列2が取り除かれます。

雑考

意外と数が多い

参考:

オラクルマスター教科書 Bronze Oracle Database 10g【SQL基礎I】編 (CD-ROM付)

オラクルマスター教科書 Bronze Oracle Database 10g【SQL基礎I】編 (CD-ROM付)