実行時間の表示
-- 実行時間の計測するように設定
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 )の戻り値を返す???
よくわからん…