2010-12-08 75 views
10

傢伙有沒有其他的方法來確定一個表是否存在除以下使用SQL查詢,以確定是否一個表存在

  1. select count(*) from <table> where rownum =1
  2. select * from user_table where table_name=<table>

請讓我知道的最好方式使用oracle sql檢查表是否存在。

感謝您的回答,我的要求是從本月的第一個日期即2010年12月1日開始檢查,格式爲suresh_20101201的表格名稱存在於數據庫中,如果不存在,則應檢查表格suresh_20101202及其上直到suresh_201。是否有可能在oracle sql查詢中完成。

+2

您使用哪個數據庫服務器? – demas 2010-12-08 08:13:27

+0

我希望你不需要爲使用名稱中的日期調用多個表的db設計負責;)每個表是否有不同的結構? – 2010-12-09 04:36:58

回答

22

你可以這樣做(在Oracle,MSSQL中有一點不同):

select count(*) 
from all_objects 
where object_type in ('TABLE','VIEW') 
and object_name = 'your_table_name'; 
+3

+1,因爲他要求甲骨文。另外,object_name必須是大寫的。 – Thilo 2010-12-08 08:18:55

0

查找在架構中,可能的事件可以使用sys.objects中,並檢查是否有型的同時時間.....

喜歡的東西

2

在大多數SQL服務器有一個系統域,您可以查詢表的存在。儘管如此,它具有很高的實現性例如,在最近版本的MySql中:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES 
    WHERE table_schema = 'db_name' 
    AND table_name LIKE 'whatever' 
1

您需要詢問服務器的系統目錄。不知道你的意思是什麼數據庫,但對於SQL Server將是:或

SELECT COUNT(*) FROM DUAL WHERE EXISTS (
    SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OWNER = 'myschema' AND OBJECT_NAME = 'your_table_name') 

這將返回一個01如果你的表存在不:

select * from sys.tables where name='your-table-name-' 
1

Oracle SQL Developer中使用此ALL_OBJECTS記錄。

相關問題