私はMysqlクエリを次のように持っています:
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
eemployee where RecordID like ? and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC= CASE WHEN COALESCE(?,'') = '' THEN RecordDateTimeUTC ELSE ? END)........
今、私のクエリにはたくさんのフィールドがあります(? -->これは、ユーザーがクエリできるようにフィルターパーポーズ用にデータを配置している場所です)ので、合体を使用していますが、合体を使用することの欠点は、null値が得られないことです従業員テーブルに存在するすべてのデータを取得したい場合は、null 値を取得するためにisNull 関数を使用しました。
今、私は上記のクエリを2つのユースケースでテストしています
1-->ユーザーは RecordID でパーセンテージを渡すことができます:-この場合、ユーザーはすべてのデータを null 値と非 null 値のいずれかで取得する必要があります。
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
eemployee where RecordID like '%'
and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC= CASE WHEN COALESCE('','') = '' THEN RecordDateTimeUTC ELSE '' END)
2-->ユーザーは RecordDateTimeUTC に基づいてデータをフィルター処理できます:- ユーザーがこのパラメーターを渡すと、上記のフィルター処理を満たす null 以外のデータをすべて取得する必要があります。:-
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
eemployee where RecordID like '%' and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC= CASE WHEN COALESCE('2012-07-09 11:11:00','') = '' THEN RecordDateTimeUTC ELSE '2012-07-09 11:11:00' END)
最初の使用例では問題なく動作していますが、2 番目の使用例では、フィルタリングされたデータと null データが得られます
したがって、上記の単一のクエリで両方のユースケースがサポートされるようにするには、クエリをどうする必要がありますか。MYSQl Query Browser を使用してクエリをテストしています
前もって感謝します