2016-07-21 6 views
-1

私はユーザー入力値とデータベース値を比較しているJavaコードを作成しています。 私は、ドロップダウンメニューから特定の部門を選択した場合、ユーザーに警告メッセージを表示するコードを書いています。しかし、私はすべての部門のすべてのユーザーに表示したいいくつかの警告メッセージがあります。 私はsr_n0alert_descdiv_codealert_flagという表の列を持っています。null値のoracleでのデコード関数

最初に、div_code = 'division code'alert_flag = 'y'に、部門固有の警告メッセージを表示するようにチェックしています。 しかし、div_code = nullalert_flag = 'y'の場合、decodeの機能がどのように機能するのかを知りたいです。

私は、このSQLクエリを試してみました:

SELECT DECODE(DIV_CODE,'61','Division A', 
        '62','Division B', 
         'ALL') 
    FROM ALERTS WHERE ALERT_FLAG='Y'; 
+1

あなたは何が起こったのか見てみましたか?私はそれがALL – davegreen100

+0

を返すだろうと仮定していた。ALLと61の両方を返す。 –

答えて

0

一致しない場合、結果は'ALL'になります。

SELECT (CASE DIV_CODE 
      WHEN '61' THEN 'Division A' 
      WHEN '62' THEN 'Division B' 
      ELSE 'ALL' 
     END) 
FROM ALERTS 
WHERE ALERT_FLAG = 'Y'; 
+0

コードはCASE文を使って私のために働いた。ありがとう@ゴードン –

0

私は、単純なSQLコマンドを書き込むことで、この問題を解決し、それは私のために働いていた:私は強く代わりに、Oracle固有のDECODE()機能の、ANSI標準のCASEステートメントを使用することをお勧めします。

SELECT ALERT_DESC FROM ALERTS A 
WHERE 
    A.DIV_CODE IS NULL 
    AND A.ALERT_FLAG='Y' ;