【SQL Server, SQL】削除フラグのあるテーブルの抽出条件 [初心者向けネタ]
あるレコードを表示したくなくて、削除フラグとか非表示フラグなんかが定義してあるレコードがよくあると思うんだが、そんなテーブルの抽出条件はcase句を使って以下のように簡単に書ける。
ちょっとしたTipsで知っている人も多いと思うが、意外に知らない人もいるようなので例を書いときます。
-- ============================================= -- Author: BSS -- Create date: 2020/01/25 -- Update date: 2020/01/25 -- Description: 部門を取得する。 -- ============================================= CREATE PROCEDURE [eigyou].[Get部門] @削除除外 bit = 1 AS BEGIN SET NOCOUNT ON; select 部門ID, 部門名, 削除FLG from dbo.部門 where 削除FLG = (case @削除除外 when 1 then 0 else 削除FLG end); END
@削除除外が1だと削除フラグが0のレコードだけ抽出され、@削除除外が0だと削除フラグにかかわらず、全件抽出されます。
where 削除FLG = 削除FLG
という式を作っているところがポイントですね。