ORACLEでCASE文を使用した時にORA-00932のエラーが出る

投稿日:2017-06-06

割と悩んだ・・・
原因は、CASE文で使用している項目のデータ型が異なるのが原因みたいだけど、正直、ぴんと来てない現実w

select 
  case name
    when 'A' then 'あ'
    when 'B' then 1
  end

自分の環境では、こんな感じのSQLで発生した。

最終的に

select 
  case 
    when name = 'A' then 'あ'
    when name = 'B' then '1'
  end

こうやって、比較条件1個ずつ書くことに・・・

CASE文って、同じ比較のときはcase〜で記述しておけば、when以下で書かなくても良かったはずなんだけどね・・・

参考にしたページ。
SELECT CASE文を使用した際のORA-00932について
http://rjge.hatenablog.com/entry/20130729/1375094451







-ORACLE
-


  1. oracle beginner より:

    上記のパターンだと、
    select
    case name
    when ‘A’ then ‘あ’ //CHAR型
    when ‘B’ then 1 //NUMBER型
    end
    が原因のため、単純に
    select
    case name
    when ‘A’ then ‘あ’ //CHAR型
    when ‘B’ then ‘1’ //CHAR型
    end
    にしてあげれば単純CASE式で書けると思いますよ。

    • ht より:

      >oracle beginnerさん
      あー、確かに。
      当時の試したこととかまでは詳細には覚えてないですが、その書き方は試してなかったと思います。
      ありがとうございます。

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

[ORACLE]統計更新を強制的にする

Oracleの統計情報の更新方法 頻度はそんなに無いというか、先日、トラブル対応時に必要に迫られたので・・・ 通常は、Oracleの統計情報は1日1回更新されるらしいんだけど、夜とかになるみたい。 多 …

Oracle Database Bronzeの勉強を始めました。

業務でOracleを使ってます。 DBへの接続と簡単なSQLの確認ぐらいだったら、SQLDeveloperとかのツールを使わずにSQLPlusだけで済ませちゃう人も多いのかな? あとは、SQLのバッチ …

[ORACLE]SQLのIN句にパラメータを適用する方法

カンマ区切りの文字列を取得した理由 こないだの続きです。 日本の中心付近で仕様変更と闘うSE日記[C#]リストをカンマ区切りの文字列で出力するhttp://ht-jp.net/blog/pc/c/c- …

何度だって引っかかるORACLEのエラー・・・。ORA-01008:バインドされていない変数があります。

今日も今日とて、ORA-01008のエラーに悩まされる。 無慈悲に「バインドされていない変数があります。」ってメッセージは出してくれるんだけど、ビンゴの位置は教えてくれないわけで・・・ 何度目だろう・ …

OracleでORA-01747 : 指定された列が無効ですのエラーの分かりづらさ・・・

OracleでORA-01747 : 指定された列が無効ですのエラーの分かりづらさったらありません・・・ SQLのUPDATE文の実行時に 「ORA-01747 : 指定された列が無効です」 とエラー …


カテゴリー