由於上述的原因,透過 Google 找到了相關的資源:
How do I determine if a table exists in a SQL Server database?
這樣的 SQL 撰寫起來蠻容易的:
IF EXISTS(
SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME='temp_table'
)
--如果存在在
DROP TABLE temp_table
ELSE
--如果不存在在
上述的 SQL 應該還蠻容易瞭解的,透過 IF...ELSE 敘述並且配合 EXISTS 語法就可以用來判斷存在性,整個 SQL 語法中的核心在於 SELECT 語句中,我們在 SQL Server 中是要透過 INFORMATION_SCHEMA 這個 system view 可以得知系統的中繼資料,透過 TABLES 就可以取得所有的 tables,然後我們在 WHERE 條件終將 TABLE_TYPE 設定為 BASE TABLE,這代表我們要查詢的是基本的 table,而不是 view;然後在告知 TABLE_NAME 為我們想要取得的 table 名稱,這樣就可以!至於為何是 SELECT 1 呢?這個數字 1 跟 C 語言中的 true 是類似的,因為在 SQL 中不存在 true 這樣的 boolean type,所以如果我們的 WHERE 條件成立,就會回傳 1 告知 EXISTS 為 true!
今天學到的東西,與大家分享之~
沒有留言:
張貼留言