例えば、ユーザIDからユーザの今の状態を引っ張ってきたいときに、 SELECT state FROM Users WHERE id = @uid; とかってやると、見つからなかった場合に空行が返ってくる。 これがいやな場合はこうする*1。 SELECT state FROM Users WHERE id = @uid UNION ALL -- 見つからなかった場合、stateとして-1を返す SELECT -1 WHERE NOT EXISTS(SELECT * FROM Users WHERE id = @uid); これで、元のSQLで見つかった場合は空行がUNION ALLされ、見つからなかった場合は空行に-1がUNION ALLされるから、絶対に空行を返さない。 元のSQLでidがPKなら、常に1行返ってくることが保証されるから、ホスト言語側で場合分けをする必要がなくなる。 *1: