はじめに
SQLServerでデータの存在確認をする方法をいつも忘れるので、備忘録として残します。
環境:SQLServer 2017
ひな形
SELECT
CASE
WHEN EXISTS
(
-- 存在をチェックしたいデータをSELECT
)
THEN 1
ELSE 0
END AS "Exists"
Existsの値が1であればデータが存在し,0であれば存在しないというクエリになります。
数値として受け取ることも可能ですが、SQLServerのデータマッピングを使って真理値型(boolean型)で取得すると使いやすいです。
使用例
ユーザが存在するかチェックしたい場合
SELECT
CASE
WHEN EXISTS
(
SELECT
1
FROM
user
WHERE
user.id = @id
) THEN 1
ELSE 0
END AS "Exists";
簡単に解説
WHEN EXISTS
で存在チェックをしています。
WHEN EXISTS
の()内で取得したデータ数が1件以上であれば 1
、0件の場合は 0
を出力する仕組みになっています。
使用例でいうと
SELECT
1
FROM
user
WHERE
user.id = @id
上記のクエリの結果が1件以上あれば 1
(存在する), 0件であれば 0
(存在しない)を出力します。