Oracle(オラクルSQL)

標準出力

DBMS_OUTPUT.PUT_LINE('出力文字列');

日付Format

SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL;

カラムや項目名を取得する

SELECT C.*
FROM USER_TAB_COLUMNS C, USER_TABLES T
WHERE C.TABLE_NAME = T.TABLE_NAME
ORDER BY C.TABLE_NAME

含む場合

CODE_STR IN ('001', '002')

含まない場合

CODE_STR NOT IN ('003', '004')

条件(EXISTS以下)が一致する場合、SELECT文を実行する

※表EMPの列DEPT_IDがD03であるレコードが存在する場合、表DEPTを検索する

SELECT * FROM DEPT
WHERE EXISTS(SELECT 'X' FROM EMP WHERE DEPT_ID = 'D03')

TO_CHARによるFormat

999,999,999.999ではなく999,999,990.999

TO_CHAR(NVL(ROUND(SCORE_VAL), 0) / 1000, '999,999,990.999')

CASE文

CASE WHEN A.KBN = 1 THEN '区分1'
     WHEN A.KBN = 2 THEN '区分2'
     ELSE '区分その他'
END AS KBN

NVLでNULL関連のエラーをなくす

NVL(A.CODE_STR, '') AS CODE_STR 'VARCHAR2なら
NVL(SUM(NVL(B.SCORE_VAL, 0)), 0) AS SCORE_VAL 'NUMBERなら

複数のINSERT文を実行する

INSERT ALL
INTO MASTER_A
VALUE(30, 1)
INTO MASTER_A
VALUE(30, 2)
SELECT * FROM DUAL

複数のUPDATE文を実行する

※スラッシュで区切る

UPDATE TABLE_A
SET CODE_VAL = 100
   ,NAME_STR = '松本'
WHERE TYPE1_STR IN('1', '2') AND TYPE2_STR = '001'
/
UPDATE TABLE_B
SET CODE_VAL = 200
   ,NAME_STR = '彦根'
WHERE TYPE1_STR IN('3', '4') AND TYPE2_STR = '002'
/
COMMIT
/

Oracleのテーブル名は30バイトまで