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

オラクル。パラメータがnullの場合はすべて選択し、そうでない場合は特定のアイテムの問題を返します

    coalesceを使用するだけです 。これを書くのに最も読みやすく理解しやすい方法です。ロジックは1つの述語に含まれているため、保守と削除が簡単です。

    select * from job where id = coalesce(:i, id)
    

    要求に応じて、これは実際にインデックスを使用する「証明」:

    create table x ( id number(15) null );
    
    create unique index x_pk on x( id );
    
    select id
    from   x
    where  id = coalesce(:x, id)
    ; -- Uses index
    
    select id
    from   x
    where  id = :x or :x is null
    ; -- Full table scan
    

    計画:



    1. Oracleは行を列に変換します

    2. PostgreSQLでスキーマのみのバックアップと復元を行うにはどうすればよいですか?

    3. Freebase内の関連するすべてのアクターの取得/保存

    4. 入力をエスケープするが、エスケープせずにデータベースに保存する方法