LoginSignup
0
0

More than 5 years have passed since last update.

OracleDB 関数備忘録

Last updated at Posted at 2019-01-16

実行時間の表示

-- 実行時間の計測するように設定
set timing on
-- 実行時間の計測をしないように設定
set timing off

TO_CHAR

  • 数値式、数値型のフォーマット、データベースキャラクタセットへの変換
  • 「FM」ってフォーマットって意味
select TO_CHAR(TO_NUMBER('31'), 'FM000') from dual;
[結果]
031

EXISTS

  • SQLにおいて使用することができる条件
  • EXISTS に続く括弧で囲まれた副問合せに対して、結果行が「存在すれば真(TRUE)」、「存在しなければ偽(FALSE)」を返す。

DUAL表(関数じゃないけど)

  • Oracleでは、「DUAL」というダミーテーブルが存在する。
  • 関数だけ使用したい時などに FROM 句の省略ができないときに使用する。
select sysdate from DUAL;
''' 以下、結果
SYSDATE
--------
19-01-17

NVL

NULL を別の値に置換、リストから最初の NULL 以外の値を探す

NVL ( XX.NUMBER , 0 ) 
→ XX.NUMBER が NULL の場合 0 を返す

MONTHS_BETWEEN

2つの日付の差、2つの日付が何ヶ月離れているか求める

SELECT MONTHS_BETWEEN('2019-01-01','2018-11-01') AS XX FROM DUAL;
[結果]
        XX
----------
         2

ADD_MONTHS

日付に月単位に加減算、日付の足し算と引き算
第二引数を にすると、月が加算。
第二引数を にすると、月が減算。

SELECT ADD_MONTHS ( '20190101', 1) AS XX FROM DUAL;
[結果]
XX
--------
19-02-01

SELECT ADD_MONTHS ( '20190101', -1) AS XX FROM DUAL;
[結果]
XX
--------
18-12-01

LAST_DAY

月末の日付を求める、その月の同月、同時刻の末日日付を求める

LAST_DAY ( datetime ) 
→ datetime の月末を算出する

DECODE

条件制御によって特定の値および値域を別の値に変換
CASE 式で書けるならそのほうが良い。
伝家の宝刀 らしい。この関数まじわからん。

DECODE ( expr , search_and_result_list [ , default ] ) 
``` より詳しく
 DECODE( FLG_1, 1, 4, NVL(FLG1,0) )
→ FLG_1 が 1 だったら 4 を返す。
→ それ以外だったら NVL(FLG1, 0 )の戻り値を返す???

よくわからん…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0