by shigemk2

当面は技術的なことしか書かない

Oracle

updateで文字列を置換したい

複数のワードを同時に置換したかったけど、面倒なので、update文を2回発行しました。 REPLACE - オラクル・Oracle SQL 関数リファレンス REPLACE - オラクル・Oracle SQL 関数リファレンス UPDATE PDATA SET HISNAME = REPLACE(HISNAME, '朝', '昼') WHERE i…

テーブルのデータをまるっと別のテーブルに移す

たぶんいくつかあると思うけども、 alter tableを使ってrenameするとか、 alter table table1 rename to rename2; insert と selectで丸コピするとか。 insert into table2 select * from table1; create table table2 as select * from table1; http://www.…

テーブルのインデックスを確認してみる

select index_name, table_name, column_name, column_position from user_ind_columns where table_name = 'テーブル名' order by index_name, column_position; Oracle でテーブルにはられているインデックスを調べるSQL - ablog Oracle でテーブルにはら…

MySQLのshow create table文みたいなことをOracleでやる

Oracle Database:表・索引のDDL文の生成方法(DBMS_METADATA.GET_DDL) (オラクルエンジニア通信 - 技術資料、マニュアル、セミナー) Oracle Database:表・索引のDDL文の生成方法(DBMS_METADATA.GET_DDL) (オラクルエンジニア通信 - 技術資料、マニュア…

NVL

NVL、COALESCE - オラクル・Oracle SQL 関数リファレンス NVL、COALESCE - オラクル・Oracle SQL 関数リファレンス 式 expr1 が NULL なら expr2 の値を戻す。Null Value Logic の略 なるほど。ところで、普通のページのリンクが埋込み式になっていることに…

Oracleの諸エラーについて

オラクルのエラーメモ(Hishidama's Error for Oracle Memo) Oracle ORA-00918: 列の定義が未確定です。 Oracleのエラー文って不親切だよねっていう話をした。 ORA-00918: 列の定義が未確定です select t1.id ,t2.id from table1 t1 ,table2 t2 where id = 'X…

ORA-00972: 識別子が長すぎます。

自由気まま思いつきブログORA-00972:識別子が長すぎます Oracle Technology Network (OTN) Japan - 掲示板 : CREATE文を実行するとORA-009 ... 列名は30バイトまでです。 列名だけじゃなくテーブル名でも同じエラーが出る。

Oracleのトリガーのステータスの確認

SELECT table_name, status FROM user_triggers WHERE trigger_name = '確認したいトリガ名'; オラクルのトリガの内容の確認方法 - ねもぷらす

case when

CASE 式(というか列) WHEN 条件1 THEN 値1 WHEN 条件2 THEN 値2 ・ ・ ・ WHEN 条件n THEN 値n ELSE デフォルト値 END ORACLE/オラクルSQLリファレンス(CASE WHEN/DECODE) 下記のような感じで、列の値を変換する。 select lastname, case sex …

rownum と order byの組み合わせ

上位n件の抽出をやりたいときに、 select * from TABLE where ROWNUM <= 5 order by NO ってやると、rownumで抽出件数を限定したあとにorder byするのでこれだと「上位n件の抽出」は出来ない。 上位n件抽出をやりたいなら、 SELECT NO FROM ( SELECT NO FROM…

ORA-00060

とは ORA-00060とは ORA-00060はデッドロックを検出した場合に発生するエラーです。デッドロックとはロックが循環した状態(AはBを待ちBはAを待っているような状態)であり、 この状態になると処理が永遠に終わらないためORACLEはデッドロックの発生を検知する…

chcsvで囲み文字を指定する

eオプションとバックスラッシュのコンボで囲み文字を指定する。 $ echo "select user,sysdate from dual" | chcsv scott/tiger -e\" -o file1 なおこのサイト、古いからなのかEUC-JPである。 追記 区切りじゃなくて、囲みでした。

V$LOCKとV$SESSION

ORACLE/オラクル・データディクショナリ(V$LOCK) ORACLE/オラクル・データディクショナリ(V$SESSION) 現在データベースに発生しているロック情報がV$LOCKであり、 V$SESSIONは、現在のセッション情報である。 プロセス・アーキテクチャ セ…

months_between

MONTHS_BETWEEN - オラクル・Oracle SQL 関数リファレンス 日付式の datetime1 - datetime2 が何ヵ月かを戻す。 TRUNC - オラクル・Oracle SQL 関数リファレンス truncと組み合わせて… select id, trunc( months_between ( sysdate, birthday ) / 12 ) as ag…

トリガーの一覧を見るSELECT文

SELECT TRIGGER_NAME, STATUS FROM USER_TRIGGERS;

chcsvを使う

echo "select A, B from RERORERO where HOHO = 'FUFU'" | chcsv user/passwd >> csv.csv ステップ・バイ・ステップ・シェルスクリプト(7):Oracleのデータもシェルで - @IT