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

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

関連記事

C# OracleDbAccessを使用して、SQL実行時にORA-00911 文字が無効です のエラー

表題のとおり、C#でOracleDbAccessを使用して、SQLを実行させる時に発生しました。 ネットで探すと、 全角スペースが原因 とか出てきたので、SQL内のスペースを全て半角スペースに置き換え …

SQL文中で全角文字を使うなと言われたので、ORACLEでJOIN句の条件式をCASE文で分岐させる

JOINの条件式にCase文を入れる http://blog.goo.ne.jp/ilikehobby/e/80b471f96f6d693b6c5df75f18591c0e SQL文中で全角文字を使う …

[Oracle]長文SQLをWITH句を使って、SQLの繰り返しをまとめる

自分、WITH句アレルギーです\(^o^)/ 今でこそ、使うようになりましたが、最初は拒否反応バリバリでした。 だって、WITH句で何ができるのか良く分からなかったからです。 VIEWのように使えるか …

[ORACLE]ORA-00918:列の定義が未確定です・・・のエラーにならなかった

なんでエラーになるものをマージしてるんだ? と、怒られました。 一瞬、理解が出来ず・・・ で、エラーを再現してもらう・・・と。 あっさり発生。 早く修正しろって突っ返されました。 頭には「?」しか浮か …

SQLのJOINの種類を理解する

これは分かりやすい。 https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ INNNER JOIN FULL OUTER J …


カテゴリー