oracle-sql

Oracle

【Oracle】CASE 式と DECODE 関数の違いと使い分け|構文・NULL・型変換・パフォーマンス・PL/SQL・実務パターンまで解説

OracleのCASE式とDECODE関数の違いと使い分けを完全解説。単純CASE/検索CASEの構文、CASE vs DECODE完全比較表(NULL扱い・型変換・パフォーマンス・SQL標準・PL/SQL対応)、NULLの等値判定の違い、暗黙型変換の罠、PL/SQLでのCASE文、ORDER BY/GROUP BY/UPDATE/INSERT内でのCASE実務パターンまで網羅。
Oracle

【Oracle】重複データを削除する方法完全ガイド|ROWID・ROW_NUMBER・CTAS・残す行の選択・再発防止まで解説

Oracleで重複データを削除する方法を完全解説。GROUP BY+HAVINGでの重複特定、ROWIDを使った削除(Oracle固有)、ROW_NUMBER()で残す行を制御する方法、CTAS再作成(大量重複時に最速)、完全一致と特定列一致の違い、最新/最古/特定条件で残す行を選ぶ方法、バッチ処理での大量削除、UNIQUE制約による再発防止まで網羅。
Oracle

【Oracle】テーブル・列のコメント(論理名)を取得・設定する方法|USER/ALL/DBA_TAB_COMMENTS・COMMENT ON・一括確認・未設定検出まで完全解説

Oracleでテーブルや列に設定したコメント(論理名)を取得・設定する方法を完全解説。USER_TAB_COMMENTS・ALL_TAB_COMMENTS・DBA_TAB_COMMENTSの違いと使い分け、USER_COL_COMMENTS・ALL_COL_COMMENTS・DBA_COL_COMMENTSで列コメントを取得、COMMENT ON TABLE/COLUMNで設定・削除、テーブルコメントと列コメントの一括取得クエリ、コメント未設定のテーブル・列の検出、DBMS_METADATAでDDL出力、PL/SQLによる一括設定スクリプト、テーブル定義書向け出力クエリまで網羅。
Oracle

【Oracle】今日の 0:00(当日開始時刻)を取得する方法|TRUNC(SYSDATE)・日付範囲フィルタ・昨日/今週/今月パターンまで解説

Oracleで今日の0:00(当日の開始時刻)を取得する方法を完全解説。TRUNC(SYSDATE)の基本、今日の23:59:59の取得、WHERE句での「今日」「昨日」「今週」「今月」「過去N日」フィルタパターン、TIMESTAMP型での0:00取得、タイムゾーン考慮(SYSDATE vs CURRENT_DATE)、日次バッチの境界条件・ログフィルタの実務パターンまで網羅。
Oracle

【Oracle】縦持ちデータを横持ちに変換する方法|PIVOT・CASE+GROUP BY・動的PIVOT・UNPIVOT・LISTAGG まで解説

Oracleで縦持ちデータを横持ちデータに変換する方法を完全解説。PIVOT句(11g以降)の基本構文と複数列PIVOT、CASE+GROUP BYによる旧方式、DECODE+GROUP BY、列数が不定の場合の動的PIVOT(PL/SQL+EXECUTE IMMEDIATE)、UNPIVOT(横→縦の逆変換)、LISTAGGによる文字列結合、月別クロス集計・ステータス別件数の実務パターンまで網羅。
Oracle

【Oracle】OFFSET / FETCH でページネーションを実装する方法|構文・バインド変数・ROWNUM 書き換え・ORDER BY の注意点まで解説

OracleのOFFSET/FETCH句でページネーションを実装する方法を完全解説。OFFSET M ROWS FETCH NEXT N ROWS ONLYの構文バリエーション(ROW/ROWS/FIRST/NEXT)、WITH TIES/PERCENTとの組み合わせ、バインド変数での動的ページネーション、ROWNUM方式との書き換え対応表、実行計画の内部変換、ORDER BY不定順の罠、管理画面・API・バッチ分割の実務パターンまで網羅。
Oracle

【Oracle】DUAL 表の使い方完全ガイド|仕組み・FAST DUAL 最適化・PL/SQL での代替・他 RDBMS 比較・実務パターンまで解説

OracleのDUAL表の使い方を完全解説。1行1列の内部構造とDUMMY列、FAST DUAL最適化(実際にはテーブルアクセスしない仕組み)、SYSDATE/USER/シーケンス/日付計算での使い方、PL/SQLではDUAL不要のケース、他RDBMS比較(MySQL/PostgreSQL/SQL ServerはFROM省略可)、Oracle 23cのFROM句省略、DUALへのDML禁止、連番生成・存在チェック・定数行生成の実務パターンまで網羅。
Oracle

【Oracle】MINUS で差分を取得する方法完全ガイド|NOT EXISTS との比較・NULL の扱い・EXCEPT・パフォーマンス・実務パターンまで解説

OracleのMINUS演算子で差分を取得する方法を完全解説。基本構文と動作(自動DISTINCT)、MINUS vs NOT EXISTS vs NOT IN vs LEFT JOINの使い分けとパフォーマンス比較、NULLの扱い、EXCEPT/MINUS ALL(21c以降)、集合演算3種(UNION/INTERSECT/MINUS)の比較、テーブル差分検出・マスタ不整合チェック・データ移行検証の実務パターンまで網羅。
Oracle

【Oracle】HAVING句の使い方完全ガイド|WHERE との違い・複数条件・サブクエリ・ROLLUP・パフォーマンスまで解説

OracleのHAVING句の使い方を完全解説。SQL評価順序でのHAVINGの位置づけ、WHEREとHAVINGの違い(行フィルタ vs グループフィルタ)、複数条件(AND/OR)、GROUP BYなしのHAVING、サブクエリとの組み合わせ、ROLLUP/CUBEの小計行フィルタ、CASE式との連携、パフォーマンス最適化(WHEREで先にフィルタ)まで網羅。
Oracle

【Oracle】NVL / NVL2 / COALESCE / NULLIF 完全ガイド|NULL置換の使い分け・暗黙型変換・短絡評価・実務パターンまで解説

OracleのNVL/NVL2/COALESCE/NULLIF関数を完全解説。NVLの基本と暗黙型変換の落とし穴、NVL2の3値分岐、COALESCEの短絡評価とNVLとのパフォーマンス差、NULLIFの使いどころ、集計関数でのNULL処理、他RDBMS対応表(IFNULL/ISNULL)、計算式・文字列連結・ORDER BYでのNULL処理の実務パターンまで網羅。
Oracle

【Oracle】LENGTH / LENGTHB で文字数・バイト数を取得する方法|全LENGTH関数・VARCHAR2 BYTE/CHAR・VSIZE・NLS設定まで解説

OracleのLENGTH/LENGTHB関数で文字数・バイト数を取得する方法を完全解説。LENGTH/LENGTHB/LENGTHC/LENGTH2/LENGTH4の全関数比較、文字セット(AL32UTF8/JA16SJIS)によるバイト数の違い、VARCHAR2(N BYTE) vs VARCHAR2(N CHAR)の関係、VSIZE関数、LENGTH('')=NULLの仕様、CLOBの文字数取得、NLS_LENGTH_SEMANTICS、バイト数超過チェックの実務パターンまで網羅。
Oracle

【Oracle】数値をゼロ埋め(ゼロパディング)する方法|TO_CHAR・LPAD・FM修飾子・桁超過対策・実務パターンまで解説

Oracleで数値をゼロ埋め(ゼロパディング)する方法を完全解説。TO_CHARの'0'書式とLPAD関数の使い方、両者の違い(先頭スペース・桁超過・型変換)、FM修飾子で先頭スペースを除去する方法、桁数を超えた場合の###問題、負の数のゼロ埋め、社員番号・伝票番号・日付連番生成の実務パターンまで網羅。
Oracle

【Oracle】指定した件数分のデータを取得する方法完全ガイド|ROWNUM内部動作・FETCH FIRST WITH TIES・SAMPLE・ページネーション設計まで解説

Oracleで指定件数のデータを取得する方法を完全解説。ROWNUMの内部動作メカニズム(なぜ>Nが効かないか)、FETCH FIRST WITH TIES/PERCENTの同値処理、SAMPLE句でのランダムサンプリング、OFFSET方式の性能問題とキーセットページネーション、実行計画でのCOUNT STOPKEY最適化まで網羅。
Oracle

【Oracle】結合を用いたデータ更新の方法完全ガイド|相関サブクエリ・更新可能結合ビュー・MERGE・ORA-01779対処まで解説

Oracleで他テーブルを結合してデータを更新する方法を完全解説。相関サブクエリUPDATE(SET col = SELECT)、更新可能結合ビュー(UPDATE SELECT FROM JOIN)、MERGEの3方式を比較。ORA-01779キー保存表エラーの原因と対処法、EXISTS/NOT EXISTSでの絞り込み、RETURNING INTO句、パフォーマンス比較、マスタ反映・ステージング取り込みの実務パターンまで網羅。
Oracle

【Oracle】TRUNC / FLOOR で小数点以下を切り捨てる方法|桁指定・負の数・端数処理・実務パターンまで解説

OracleのTRUNC/FLOOR関数で小数点以下を切り捨てる方法を完全解説。TRUNCの桁指定(小数第n位・十の位・百の位)、TRUNCとFLOORの負の数での違い(0方向 vs -∞方向)、消費税・割引の端数切り捨て、MODとの任意単位切り捨て、GROUP BYでの金額帯集計、CEIL/ROUNDとの比較まで網羅。
Oracle

【Oracle】CEIL関数で小数点以下を切り上げる方法|任意桁での切り上げ・負の数・ページネーション・消費税計算まで解説

OracleのCEIL関数を完全解説。基本構文と整数への切り上げ動作、任意の小数桁での切り上げ数式テクニック(CEIL(n*100)/100)、十の位・百の位への切り上げ、負の数の動作(0方向への丸め)、FLOOR/TRUNC/ROUNDとの違い、ページネーション・梱包計算・消費税1円未満切り上げ・時間単位料金の実務パターンまで網羅。
Oracle

【Oracle】改行コードを置換・削除する方法完全ガイド|REPLACE・REGEXP_REPLACE・UPDATE実行・CLOB対応・確認方法まで

OracleSQLで改行コードを削除・置換する方法を完全解説。CHR(10)/CHR(13)の確認方法、REPLACE関数とREGEXP_REPLACE関数の使い分け、UPDATEで実際に削除・スペース置換する方法、CLOB/NCLOB型への対応、パフォーマンスを考慮したWHERE条件付きUPDATEまで実務パターンを網羅。
Oracle

【Oracle】日付から曜日を取得する方法|TO_CHAR D/DY/DAY・NLS設定・曜日別集計まで実務パターン解説

OracleでTO_CHAR関数を使って日付から曜日を取得する方法を解説。D(曜日番号)・DY(略称)・DAY(フルネーム)の使い分け、NLS_DATE_LANGUAGEによる日本語・英語切替、FM修飾子の活用、CASE文での曜日変換、NEXT_DAY関数、曜日別GROUP BY集計まで実務で使える全パターンを紹介します。
Oracle

【Oracle】システム日付を取得する方法|SYSDATE・SYSTIMESTAMP・CURRENT_DATEの違いと実務パターン

OracleでSYSDATE・SYSTIMESTAMP・CURRENT_DATEを使ってシステム日付を取得する方法を解説。TO_CHARによるフォーマット変換、日付計算(TRUNC・ADD_MONTHS・LAST_DAY)、INSERT/UPDATEでの活用、PL/SQL、タイムゾーンの違い、FIXED_DATEまで実務パターンを網羅。
Oracle

【Oracle】日付を和暦で取得する方法|TO_CHARとNLS_CALENDARで令和・平成変換

OracleのTO_CHAR関数とNLS_CALENDAR=Japanese Imperialで日付を和暦(令和・平成・昭和)で取得する方法を解説。フォーマット要素、NLS_DATE_LANGUAGE設定、ALTER SESSION、CASE文による手動変換、PL/SQL関数化、他RDBMS比較、よくあるエラーと対処法、帳票出力・年度計算の実務パターンまで網羅。