oracleで数字と文字が混在しているときに、数字だけ使いたい(ORA-01722の解消) はい、データの持ち方が雑。 しかもデータのぶつけ先が数値(number型)のときに割と困ります。 to_numberしてぶつけているのですが、案の定数値にならない文字が入っていました。 ...
もっと読む
カテゴリ: oracle
再帰の無限ループのためのお守りが不必要になったらしい oracle10g
再帰の無限ループのためのお守りが不必要になったらしい oracle10g 前に書いた記事 http://workmemo.techblog.jp/archives/33586994.html oracleでカンマ区切りの文字列を複数行に展開する(横持ち→縦持ち) こちらのSQLで、おまじない的に書いていた部分が実は ...
もっと読む
oracleで割り算のあまりを出す mod
oracleで割り算のあまりを出す mod そういえばあまりってどうやるんだろう? と思って調べたら、modでした。 EXCELと同じ使い方でした。 例) select mod(8,3) from dual 8 ÷ 3 のあまりで、2となります。 参考: http://oracle.se-free.com/dml/0 ...
もっと読む
oracleで自分のロール回りを調査するSQL
oracleで自分のロール回りを調査するSQL ●自分についているロールを確認する方法 select * from sys.user_role_privs; ●ロールについて一覧を出す select * from sys.role_sys_privs; ●ロールを付ける grant ... (下のサイトを参照) http://itref.fc2web ...
もっと読む
oracleでカンマ区切りの文字列を複数行に展開する(横持ち→縦持ち)
oracleでカンマ区切りの文字列を複数行に展開する(横持ち→縦持ち) 複数行を1セルに突っ込む、ListAgg関数があるので、 その逆はあるのかなと探してみたものの、どうも見当たらなかったので、再帰with句で頑張りました。 ひょっとしたらもっといい方法があるかも? ...
もっと読む
oracleで特殊文字の削除を、正規表現で簡単にやる(REGEXP_REPLACE)
oracleで特殊文字の削除を、正規表現で簡単にやる(REGEXP_REPLACE) テキストデータを取り扱っていると、どうしても特殊文字が入ってくることがあるのですが、 文字だけ抜き出したい、という時に1つずつ置換するのは面倒(そして遅い) というこことで、正規表現 ...
もっと読む
oracleのto_dateの落とし穴、MMを省略すると01ではなく当月が入る
oracleのto_dateの落とし穴、MMを省略すると01ではなく当月が入る もうタイトルそのままなんですが。 select to_date('201802','YYYYMM') from dual →2018-02-01の日付が入る select to_date('2018','YYYY') from dual →実行日が8月なら、2018-08-01が入る ...
もっと読む
ORA-01536: space quota exceeded for tablespace 'SCRATCHPAD' が出たのでゴミ掃除
ORA-01536: space quota exceeded for tablespace 'SCRATCHPAD' が出たのでゴミ掃除 oracleで自分が作った中間テーブルの調査 user_tables を行い、不必要なものをdrop tableすることで対応しました。 行数が多い方が影響ある、ということで、行数も出すようにしました ...
もっと読む
oracleのIOT(index organized table)索引構成表について調べてみた
oracleのIOT(index organized table)索引構成表について調べてみた なんか仕事で話題になったので調べてみました。 参考: https://www.shift-the-oracle.com/table/index-organized-table.html 昔DBがパツパツだった時代に、色々改善するために作られた手法 ...
もっと読む
SQLで30秒切り上げを再現
SQLで30秒切り上げを再現 0秒の場合は0秒、1??30秒の場合は30秒・・・ みたいな切り上げを作る必要になったため、以下のように再現。 select ceil(xxx / 30) * 30 from xxxx ceil関数で切り上げて、もう一度30を掛ければ出来上がり。 検証用SQL ...
もっと読む