sql >> データベース >  >> RDS >> Oracle

Oracleの最大の関数でNullを処理する

    あなたの質問には具体的に2つの列が含まれていますが、GREATESTが必要な状況に遭遇しました。 /LEAST 3列以上の。これらのシナリオでは、COALESCEを使用できます ソリューションを必要な数の列に拡張します。

    これは、3つの列aの例です。 、b 、およびc

    GREATEST(
        COALESCE(a, b, c),
        COALESCE(b, c, a),
        COALESCE(c, a, b)
    )
    

    COALESCEの列の順序に注意してください 各入力列が最初の要素COALESCEになるように変更します 少なくとも一度は。これがNULLを返すのは、すべての入力列がNULLの場合のみです。

    「一般的なソリューション」では、COALESCEの数 ステートメントは入力列の数と等しくなります:

    GREATEST(
        COALESCE(col1, col2, col3, col4, ....),
        COALESCE(col2, col3, col4, ...., col1),
        COALESCE(col3, col4, ...., col1, col2),
        COALESCE(col4, ...., col1, col2, col3),
        COALESCE(...., col1, col2, col3, col4),
        ...
    )
    


    1. JavaのpreparedStatementを使用してJSONオブジェクトをPostgresに挿入するにはどうすればよいですか?

    2. MySQLでのSELECTINTO

    3. MySQLレプリケーションが遅れている場合の注意点

    4. 制限付きのDjangoprefetch_related