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名を取得することができます。
サーバー名を取得し、テスト環境と本番環境の処理を分けたいときに便利ですね。
以上