【发布时间】:2012-09-12 15:20:56
【问题描述】:
我已经搜索并没有发现任何相关信息(我认为这是不可能的)。我的问题是我必须检查是否存在临时表,以及该临时表上是否有一些特定数据。
以前有人遇到过这种情况吗?你是如何设法解决的?我想避免创建数百万个 IF..ELSE 块。
编辑:
IF (OBJECT_ID('tempdb..#tempTable') IS NOT NULL
AND EXISTS (SELECT * FROM #tempTable WHERE THIS_COLUMN = 'value'))
BEGIN
PRINT 'Temp table and data exists'
END
ELSE
BEGIN
PRINT 'Temp table or data does not exist'
END
这就是我想做的。当 tempTable 不存在(可能发生)时,问题就来了。它抛出一个错误,因为虽然第一个语句返回 false,但它继续执行第二个语句。并且SELECT 语句无法找到该表,因此会引发错误。我找到的解决方案是这样做:
IF OBJECT_ID('#tempTable') IS NOT NULL
BEGIN
IF EXISTS (SELECT * FROM #tempTable WHERE THIS_COLUMN = 'value'
BEGIN
PRINT 'Temp table and data exists'
END
ELSE
BEGIN
PRINT 'Temp table exists but data does not exist'
END
END
ELSE
BEGIN
PRINT 'Temp table does not exist'
END
我的问题是,有没有办法有 2 个条件,如果第一个条件返回 false,不检查第二个条件?有点像在编程语言中使用&&。
【问题讨论】:
-
百万?从您的描述中听起来像 两个。
-
好吧,我得检查一下临时表是否存在,具体数据是否存在很多次。
-
独占 AND?这样的事情是不存在的。向我们展示您的一些数据样本以及您需要在那里检查的具体内容。
-
这里的正确术语是短路而不是排他性和。
-
感谢您的澄清,@Clodoaldo。这正是我想知道的。
标签: sql-server sql-server-2008 bitwise-operators temp-tables