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バイトまで