2010-12-08 77 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记录。

相关问题