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

'%'のように使用し、NULL値をNUMBER列と一致させます

    それはあなたが自分自身のために人生を困難にしているようです。それらをnullのままにしてから、次のようにします。

    where (param1 is null or t.col1 like param1)
    and (param2 is null or t.col2 like param2)
    

    param1の場合 (プロシージャの引数。パラメータ/変数名と列名が異なると、作業が簡単になります。列名を少し明確にするために変更しました)nullの場合、基本的に無視されます*。すべての行がその部分を通過します。列の値がnullであるかどうかに関係なく、フィルターのparam2の場合 ではありません nullの場合、is null それが失敗し、param2に一致する(nullではない)列値を持つ行のみをチェックします 値はフィルターのその部分を満たしています。

    *orの条件 任意の順序で評価できます。 is null 最初に確認することは、必ずしもlikeを意味するわけではありません 評価されません-しかし、オプティマイザーはその種のことについてかなり賢いです



    1. Chart.js v2.6:円グラフの出力値に矢印を追加

    2. Mysqlで2つの独立したテーブルを選択します

    3. %NOTFOUNDはフェッチ後にnullを返すことができますか?

    4. mysql2のインストール中にエラーが発生しました:gemネイティブ拡張のビルドに失敗しました