[解決済み] エラーを取得する - ORA-01858: 数値が期待される場所で非数値文字が見つかりました。
2022-02-04 16:54:51
質問内容
以下のSQLでエラーが発生します。
ORA-01858: 数値が期待される場所で非数値文字が見つかりました。
SELECT c.contract_num,
CASE
WHEN ( MAX (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) < 32
THEN
'Monthly'
WHEN ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) >= 32
AND ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) < 91
THEN
'Quarterley'
ELSE
'Yearly'
END
FROM ps_ca_bp_events c
GROUP BY c.contract_num;
解決方法は?
このエラーは、以下のいずれかの方法で発生しています。
TO_DATE
とは異なるフォーマットマスクを使用しています。
nls_date_format
パラメータ[1]を使用するか、event_occurrence列に数値でないデータが含まれているためです。
a) 日付カラムに TO_DATE を使用しないようにクエリを修正する必要があります。b) event_occurrence が単なる数字であると想定される場合は、データを修正する必要があります。
そして、そのカラムのデータ型を修正して、数字しか格納できないようにすることです。
[1]
したときにオラクルが行うこと。
TO_DATE(date_column, non_default_format_mask)
があります。
TO_DATE(TO_CHAR(date_column, nls_date_format), non_default_format_mask)
一般に、デフォルトの
nls_date_format
パラメータは
dd-MON-yy
したがって、このクエリでは、日付カラムが dd-MON-yy という形式の文字列に変換され、それを MMDD という形式の日付に戻している可能性が高いです。文字列がこのフォーマットでないため、エラーが発生します。
関連
-
ORCALテンポラリーテーブルの作成と削除
-
オラクルインデックス概要
-
Oracleデッドロック検出クエリとその処理
-
Navicat PremiumツールでOracleデータベースをMySQLに移行する
-
plsqlを使用してリモートOracleデータベースに接続する複数の方法
-
Oracleのカンマ区切り文字列を複数行に分割したデータ例
-
[解決済み] PLS-00302: component must be declared when it exists?」と表示されます。
-
[解決済み] PLS-907でライブラリユニットを読み込めない
-
[解決済み] ORA-29283: 無効なファイル操作 ORA-06512: "SYS.UTL_FILE", 行 536 で。
-
[解決済み] ORA-4031 "unable to allocate x bytes of shared memory" を解決する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ORCALテンポラリーテーブルの作成と削除
-
オラクルデータベースに付属するすべてのテーブル構造を説明する(sqlコード)
-
Oracle11g r2のアンインストール、詳細なチュートリアルのクリーンな再インストール(プロのテストは、効果的な再インストールされている)。
-
Oracle 11gのダウンロード、インストール、グラフィックチュートリアルを使用します。
-
[解決済み] ORA-00900: 無効な SQL 文 - Oracle 10g のプロシージャを実行するとき
-
[解決済み] ORA-00955 "名前はすでに既存のオブジェクトによって使用されています"
-
[解決済み] オラクル ユーザーデータでConnect By Loop
-
[解決済み] Oracleで変数を宣言して表示する方法
-
[解決済み] PLS-907でライブラリユニットを読み込めない
-
[解決済み】うるう年対応の日付形式dd/mm/YYYY, dd-mm-YYYY, dd.mm.YYYY, dd mmm YYY, dd-mmm-YYYY, dd/mmm/YYY, dd.mmm.YYY Yの正規表現で確認する。