プログラマの日記

Javaプログラマの苦悩の日々

oracle小技集

こんにちは、仕事でデータベースの中身を移行するときに使ったちょっとした

oracleの小技を紹介します。

SELECTした結果の、あるカラムの内容だけを書き換えて

UPDATEするときに便利だと思った関数です。

・文字連結
UPDATE TBL_TEST SET
    (ID, NAME) =
(SELECT
    ID,
    NAME || 'TEST' NAME
FROM TEST_TBL)

これで、抽出したレコードのNAMEカラムの後ろに'TEST'と言う

文字列を連結して更新することができます。

・文字列の置換

あとREPLACE等も使えます。

UPDATE TBL_TEST SET
    (ID, NAME) =
(SELECT
    ID,
    REPLACE(NAME, 'TEST', 'TEST2') NAME
FROM TEST_TBL)

これで、NAMEカラムの'TEST'文字列を'TEST2'文字列に

置き換えて更新することができます。

・SYS_CONTEXT

SYS_CONTEXTを使えばホスト名や、データベース名を取得することもできます。

SELECT
    SYS_CONTEXT('USER_ENV', 'SERVER_HOST') HOST_NM,
    SYS_CONTEXT('USER_ENV', 'DB_NAME') DB_NM
FROM DUAL

SYS_CONTEXT('USER_ENV', 'SERVER_HOST')でサーバーのホスト名を取得

SYS_CONTEXT('USER_ENV', 'DB_NAME')でDB名を取得することができます。

サーバー名を取得し、テスト環境と本番環境の処理を分けたいときに便利ですね。

 

以上