sql判斷臨時表是否存在
㈠ 如何判斷一個臨時表是否存在呢
if object_id('tempdb..#tempTable') is not null
Begin
DROP TABLE #tempTable
End
測試好用
㈡ 檢查臨時表是否存在
sql serverif object_id('tempdb..##TEMPTABLE1') isnotnulldroptable ##TEMPTABLE1 上面一種不檢查類型,##TEMPTABLE1可能是view或procere的名字,完整的檢查如下 ifexists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..##TEMPTABLE1') and type='U') droptable ##TEMPTABLE1 處理臨時表的注意事項使用中發現 select into 臨時表 很麻煩,下面是使用中發現的一些注意事項(一下以mssqlserver為例):1,一般使用create table person (id int ,name varchar(20),birthday datetime) 讀取數據到臨時表中 select * into #tb_tmp from person where .... 使用臨時表中的數據 select name from #tb_tmp where id = 1 使用之後不要忘記刪除臨時表(drop table #tb_tmp),否則下次使用時會報錯如: 消息2714,級別 16,狀態 6,第 1 行 There is already an object named '#tb_tmp' in the database.2,常見問題 select '' as col into #tb_tmp 會包如下錯誤: 消息2731,級別 16,狀態 1,第 2 行 Column 'col' has invalid width: 0.解決以上問題有兩種方法: 解決方案一,''->null select null as col into #tb_tmp 解決方案二,''->ltrim(' ') or ''->rtrim(' ') select rtrim(' ') as col into #tb_tmp 解決方案一引發的問題: 插入問題:只能插入int數字或數字類字元串(其中插入帶小數的數字,小數部分會被自動去除) 如果插入數字以外的字元串,如:insert into #tb_tmp values('asdfsadf')會報如下錯誤: 消息245,級別 16,狀態 1,第 3 行
㈢ 關於sql語句臨時表問題
大哥你這樣寫重復不太友好啊
你這樣吧
--判斷臨時表是否存在,存在就刪除
IF(Object_id('Tempdb..#tbl')>0)
droptable#tbl;
--這里開始,臨時表是肯定不存在了,所以可以放心用了
select
B.id,
A.StepId,
A.DataId,
C.status
from
FlowPathsasA,
JLShenBaoasB,
StepsasC
into#tbl
where
A.StepId=C.status
andA.DataId=B.ID
andC.status!=4--這里,就一個條件,沒必要再嵌套一層sql查詢了,直接加條件就好了
select*from#tbl;
/*
PS.使用ifelse注意
1、if和else塊下只有一條sql,不需要begin與end
2、if和else塊下有多條sql,必須加上begin與end
3、建議,不管if和else塊下有幾條sql,都寫上begin與end
如:
if(1=1)
begin
select1
end
else
begin
select2
end
*/
㈣ sql判斷臨時表是否存在
使用tempdb中的表sysobjects 來查詢,判斷。
1、新建臨時表#test
CREATETABLE#test(
idchar(10)NOTNULL,
aintNOTNULL,
bdatetimeNOTNULL,
cchar(10)NULL)
2、判斷語句如下
selectcasewhencount(*)=1then'表存在'else'表不存在'end
fromtempdb..sysobjects
whereid=object_id('tempdb..#test')
㈤ sql語句 判斷表是否存在
IF EXISTS(SELECT name FROM [sysobjects] WHERE name = '表名')
PRINT '該表存在'
ELSE
PRINT '該表不存在'。
㈥ 臨時表 是否存在
(已建立返回值為一個整數,未建立則返回Null值) Tempdb 是表示存臨時表的資料庫 我們可在建立臨時表前先用以下語句判斷臨時表是否已存在,當已存在時就刪除該臨時表。 if not (select object_id('Tempdb..#TempTable')) is null drop table #TempTable eg:if not (select object_id('Tempdb..#1234')) is null drop table #1234 寫法更簡單 三種功能是一樣的 IF Exists (select * from tempdb.dbo.sysobjects where id=object_id(N'Tempdb..#1234')) drop table #1234 IF Exists (select * from tempdb..sysobjects where id=object_id(N'Tempdb..#1234')) EXECUTE('DROP TABLE #1234') 2.臨時表與永久表相似,但臨時表存儲在 tempdb 中,當不再使用時會自動刪除。臨時表有兩種類型:本地和全局。它們在名稱、可見性以及可用性上有區別。 本地臨時表的名稱以單個數字元號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 SQL Server 實例斷開連接時被刪除。 全局臨時表的名稱以兩個數字元號 (##) 打頭,創建後對任何用戶都是可見的,當所有引用該表的用戶從 SQL Server 斷開連接時被刪除。 3.永久表 id = object_id(N'[dbo].[DH_SJMT]') if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DH_SJMT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[DH_SJMT] 4. select * from dbo.sysobjects 查詢永久表 名稱。name/id/xtype 一般用戶創建的 xtype='U' select [name] from tempdb..sysobjects 查詢臨時表 名稱。name/id/xtype 一般用戶創建的 xtype='U' 5。案例分析
㈦ SQL 判斷零時表存在 存在刪除並創建 不存在就創建
您好:
判斷SQL如下。
ifexists(select*fromtempdb..sysobjectswhereid=object_id('tempdb..#臨時表名'))
droptabletempdb..##臨時表名
或者
ifobject_id('tempdb..#臨時表名')isnotnull
Begin
DROPTABLE#臨時表名
End
㈧ 判斷臨時表是否存在(臨時表的刪除)
臨時表有兩種類型:本地和全局。
它們在名稱、可見性以及可用性上有區別。本地臨時表的名稱以單個數字元號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 SQL Server 實例斷開連接時被刪除。
全局臨時表的名稱以兩個數字元號 (##) 打頭,創建後對任何用戶都是可見的,當所有引用該表的用戶從 SQL Server 斷開連接時被刪除。
我寫這篇文章的主要目的是,如果判斷這個臨時表是否存在。
方式一:IF EXISTS (SELECT * FROM sysobjects WHERE object_id = OBJECT_ID(N'[dbo].[#tempTable]') AND type in (N'U'))BeginDROP TABLE [dbo].[tempTable]End
當然你會發現你是錯誤的。如果不認真看文章的。。。。兄弟這是一個坑。方法二:if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'[#temptable]'))BeginDROP TABLE #temptableEnd當然這還是一個坑,
真正的方法:
方法一:因為所在資料庫不同方法二:因為臨時表名已變
就到這里了。
㈨ sql server 中的 if exists
因為你那個判斷臨時表是否存在的語句不正確,應該這樣寫
IF EXISTS (select object_id('Tempdb..#temp'))
DROP TABLE #temp
GO