[解決済み] エラー発生 - ORA-01858: 数値が期待される場所に非数値の文字が見つかりました。
2022-01-30 09:37:41
質問内容
以下の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 という形式の日付に戻している可能性が高いです。文字列がこのフォーマットでないため、エラーが発生します。
関連
-
オラクルデータベースに付属するすべてのテーブル構造を説明する(sqlコード)
-
Oracleの表領域と権限を徹底解説
-
Oracle Databaseの失敗したオブジェクトの処理の詳細
-
Oracle11gアンインストール完全版グラフィックチュートリアル
-
Oracle11g r2のアンインストール、詳細なチュートリアルのクリーンな再インストール(プロのテストは、効果的な再インストールされている)。
-
オラクルのTO_DATEの使い方解説
-
[解決済み】ORA-00932: 整合性のないデータ型: 予想される - CLOB を取得しました。
-
[解決済み] エラー: ORA-01704: 文字列リテラルが長すぎる
-
[解決済み] ORA-01799: 列がサブクエリに外部結合されていない可能性があります。
-
[解決済み] 外部キーの追加エラー。ORA-02298: 検証できません - 親キーが見つかりませんでした
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Oracle Temporary Tablespace SQLステートメントの実装
-
[解決済み] ORA-01461: LONG 値は、LONG 列への挿入にのみバインドできます-クエリー時に発生します。
-
[解決済み] ORA-29913: Oracle に csv を挿入する際の ODCIEXTTABLEOPEN コールアウトの実行でエラーが発生しました。
-
[解決済み] Oracleのテーブル名の最大長は?
-
[解決済み] ORA-04021: オブジェクトのロック待ちでタイムアウトが発生しました。
-
[解決済み] PLS-00302: component must be declared when it exists?」と表示されます。
-
[解決済み] オラクル ユーザーデータでConnect By Loop
-
[解決済み] oracle pl/sql DBMS_LOCK エラー
-
[解決済み] 1行のみ追加 "ORA-02290: チェック制約 (SYS_C0012762) 違反 ORA-01403: データが見つかりません"
-
[解決済み】うるう年対応の日付形式dd/mm/YYYY, dd-mm-YYYY, dd.mm.YYYY, dd mmm YYY, dd-mmm-YYYY, dd/mmm/YYY, dd.mmm.YYY Yの正規表現で確認する。