oracleのロジックで切り上げがあった(ceil関数) 前に色々書いたんですが、プラスの数字だけで言えば切り上げ関数ありました。 select ceil(10.4) from dual →11 マイナスの時は、減る動きをするので、それだけ注意 select ceil(-10.4) from dual →-10 ※2017.08.17 ...
もっと読む
カテゴリ: oracle
oracleで出力データのうち、ランダムで数件を取ってくる
oracleで出力データのうち、ランダムで数件を取ってくる サンプリングで10件データを取ってくる必要があったのですが、 調べてたら丁度いいのがありました。 select * from table_name sample(5) where rownum ...
もっと読む
oracleで数字を切り上げる方法
oracleで数字を切り上げる方法 調べたら、どうも切り捨てはあるものの、切り上げは存在しないように見える。 ので、一旦以下のように対応してみました。 切り捨て=trunc 要件:50単位に丸める。端数切り上げ select trunc((dat / 50 ) + 0.99 ) * 50 問題 ...
もっと読む
複数行を出力した時に、前の行のデータを出力する。lag関数。
複数行を出力した時に、前の行のデータを出力する。lag関数。 結構あるのが、複数行出力した前の行との差分が出したい、というような場合。 なんか調べたら、凄い簡単に出来ました。 lag関数で、幾つ前か(デフォルトは1)、データが無い場合のデフォルト指定も出来 ...
もっと読む
oracleで時間、分、秒などを簡単に切り出すEXTRACT関数
oracleで時間、分、秒などを簡単に切り出すEXTRACT関数 なんかもうそのまんまなものが欲しくて調べたら、 そのまんまの関数がありました。 select EXTRACT(month from sysdate) from dual こうすると、月が取得出来る。 但し、時分秒を取得する場合、timestamp型 ...
もっと読む
ORA-30926: unable to get a stable set of rows in the source tables が出た
ORA-30926: unable to get a stable set of rows in the source tables が出た margeのSQLがこけてて、上記のようなエラーが出ていた。 原因はこんな感じでした。 ・selectの結果を対象テーブルと当てるときに ・引き当てた結果が複数になり ・しかも対象がヒットし ...
もっと読む
oracle上での改行コードとタブとCHR関数
oracle上での改行コードとタブとCHR関数 そらもう良く使うので、メモ。 chr(10):LF chr(13):CR chr(9):タブ chr(32):スペース CRLFは、CHR(13)とCHR(10)を両方見る必要がある。 何かもう過去の経緯なんでしょうがないといえばしょうがないです。 参考: htt ...
もっと読む
as指定のせいで「ORA-00923: FROMキーワードが指定の位置にありません。2
as指定のせいで「ORA-00923: FROMキーワードが指定の位置にありません。2 ORA-00923: FROMキーワードが指定の位置にありません。 がまた出ました。 結論から書きますが、asが2個あった。 select dat as as data_xxx from dual 一瞬見ても分かりづらいし、SQ ...
もっと読む
ORA-00934 がでて、group by がちょっとおかしかった話
ORA-00934 がでて、group by がちょっとおかしかった話 こんなエラーが出た時の対処法。 ORA-00934: group function is not allowed here SQLの絞り込みを変則的に行う必要があり、条件がmaxやsumを行った後の結果で判断するSQLでした。 havingに条件を持ってくる形 ...
もっと読む
not like をnullが入るデータに使わない方が良いという話
not like をnullが入るデータに使わない方が良いという話 oracleの話です。 前に書いたかもしれないのですが、not likeの話。 not like自体は、そのままlikeをnotするだけなんですが、 likeはnullがあるときに挙動が怪しくなります。 そして問題の例 select * ...
もっと読む