2010-04-14 81 views
2

是否有快速/有效的方法来检查表是否为空?Microsoft SQL Server 2005检查临时表是否空

DECLARE @StartEndTimes TABLE 
(
    id bigint, 
    StartTime datetime, 
    EndTime datetime 
) 

IF @StartEndTimes IS NOT NULL 
+1

只是一个FYI上面的代码创建一个表变量不是临时表。临时表以#开头,并存储在tempdb中,并且我相信会继续存在,直到sql的实例重新启动并重新创建tempdb。 – etoisarobot 2010-04-14 19:36:58

+0

实际上,根据SQL专业人员所做的一些研究,它们可能几乎相同(但在不同的范围内):http://blog.sqlauthority.com/2009/12/15/sql-server-difference-temptable -and-table-variable-temptable-in-memory-a-myth/ – Lucero 2010-04-14 20:50:39

回答

8

而不是计数您可以;

if exists (select id from @StartEndTimes) 
    set @has_stuff = 1 

一旦它碰到一行就会返回。

+0

+1 - 我会为EXTRTS而超过COUNT的表现 – AdaTheDev 2010-04-14 19:35:40

+0

+1所以我会看起来对于一行并返回... count必须遍历表 – gbn 2010-04-14 19:41:34

1

我觉得你最好的选择可能是COUNT

DECLARE @StartEndTimes TABLE 
( 
    id bigint, 
    StartTime datetime, 
    EndTime datetime 
) 

SELECT COUNT(1) FROM @StartEndTimes 
+1

击败拳打...... + 1 – heisenberg 2010-04-14 19:22:57