【发布时间】:2014-11-28 09:51:22
【问题描述】:
我有指示行是否存在的位(或整数)变量。
是的,我知道最好只检查EXISTS,但目前我需要将它的值设置为我的变量。
所以问题:使用SELECT 或EXISTS 哪个更好
DECLARE @signoff int
set @signoff = 0
Set @signoff = (SELECT TOP 1
AccountsOperations_ID
FROM AccountsOperations
WHERE Operation_ID = 3 and Submission_ID = @SubmissionID and AccountDate is null)
然后检查
if @signoff is null or @signoff = 0
或
DECLARE @signoff bit
set @signoff = 0
Set @signoff = SELECT CAST(
CASE WHEN EXISTS(SELECT TOP 1
AccountsOperations_ID
FROM AccountsOperations
WHERE Operation_ID = 3 and Submission_ID = @SubmissionID and AccountDate is null)
THEN 1
ELSE
0
END
AS BIT)
【问题讨论】:
-
在第二个例子中,你在哪里设置变量的值?您只是为其设置 1 或 0。
-
因为
BIT只有2个可能的值 -
我以为您想要变量中的 AccountOperations_ID 的值。检查你在做什么是不正确的。但是,如果您只是希望您的变量成为一个标志,那么您应该考虑将其默认为 0,然后将 IF EXISTS 子句设置为 1。这将是最好的方法。