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]IMPコマンドで、複数テーブルをインポートする

OracleでIMPコマンドでdumpファイルをインポートする時に、特定のテーブルだけインポートしたい時ってある。 後は、複数のテーブルを纏めてインポートする方法を説明します。 Oracleを使ってる …

ORACLEで他のスキーマでSQLを実行した時に、権限不足で「ORA-01031: 権限が不足しています。」のエラーになる

A5Mk2 http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/ 普段、SQL関連は、A5Mk2っていうソフトを使用しています。 今回のエラーは、自 …

OracleでLISTAGG関数を使ったけど、世界を変えられなかった話・・・

OracleでLISTAGG関数を使ったら、世界が変わった話。 はい、休日出勤でした。 そして、休日出勤の結果、以下のことが分かりました(泣 日本の中心付近で仕様変更と闘うSE日記OracleでLIS …

[ORACLE]多分、例外的なora-00911:文字が無効ですエラーの解決方法

多分、このエラーを目にする機会はそれなりにあって、大体の対処法はググればすぐに見つかると思う。 例えば、 SQL実行時にはOKなのに、C#のOracleDbAccess実行時にエラーになる 全角スペー …

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

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


カテゴリー