2017-05-10 5 views
0

WHERE/AND節が一致しないと、特定のエラーメッセージが表示されることはありますか?このようなどのSQL WHERE句が一致しなかったかを知ることはできますか?

たとえば何か:

SELECT foo 
FROM bar 
WHERE date >= CURRENT_DATE /* if date < current date -> ERROR 1 */ 
    AND name = 'John'   /* if name not equal 'John' -> ERROR 2*/ 

は、私はそれが有効だかどう

+0

しませんか?。あなたがエラーを発生させるレベルを必要とするなら、私は、テンポラリテーブルに日付に基づく最初のデータセットを入れ、行数をチェックすることをお勧めします。 0の場合はエラー1が発生します。ゼロでない場合は、tempテーブルからname = johnを選択して同じ操作を行います。 – Wheels73

答えて

0

使用case式が行ごとにあなたを教えてPostgresデータベースを使用しています。

あなたが CASE文でそれを行うことができ
SELECT foo, 
     case when date < CURRENT_DATE then 'ERROR 1' end, 
     case when date <> 'John' then 'ERROR 2' end 
FROM bar 
+0

だから私はもっと声明を出さなければならないのですか?この場合、データセット全体が選択されます。 –

+0

はい、このクエリはすべての行を返します。あなたが望むものではありませんか? – jarlh

0

SELECT foo, 
    CASE WHEN date < current_date THEN 'ERROR 1' ELSE 'NO ERROR' END AS error_1, 
    CASE WHEN name != 'John' THEN 'ERROR 2' ELSE 'NO ERROR' END AS error_2 
FROM bar; 
+0

Case _expression_、not statement。 – jarlh

0

私はなめらかを逃すかもしれないが、なぜ誰もが2つの列を提供しています1文と...なぜ

SELECT foo, 
    case 
    when date < CURRENT_DATE then 'ERROR 1' 
    when date <> 'John' then 'ERROR 2' 
    else 'OTHERS' 
    end 
FROM bar 
関連する問題