2010-12-08 19 views
10

chicos ¿hay alguna otra manera de determinar existe una tabla que no sea continuaciónUsando consulta SQL para determinar si existe una tabla

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

amablemente que me haga saber la mejor manera para verificar si existe una tabla usando oracle sql.

Gracias por la respuesta, mi requisito es verificar desde la primera fecha del mes actual, es decir, 01/12/2010 con el nombre de la tabla en el formato suresh_20101201 existe en la base de datos; si no, debería verificar la tabla suresh_20101202 y al respecto hasta suresh_201. es posible hacer en Oracle sql query.

+2

¿Qué servidor DB usas? – demas

+0

Espero que no sea responsable de un diseño de base de datos que requiera varias tablas con una fecha en su nombre;) ¿Cada tabla tiene una estructura diferente? –

Respuesta

22

Usted puede hacer esto (en el oráculo, en mssql hay un poco diferente):

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

+1 porque pidió Oracle. Además, el object_name debe estar en mayúscula. – Thilo

+3

@Thilo: no, los nombres de los objetos en Oracle no tienen que estar en mayúsculas. Usualmente lo son, pero no tienen que serlo. –

+2

Casi siempre lo son. Y a menos que haya creado una tabla con el nombre entre comillas (para que distinga entre mayúsculas y minúsculas), ALL_OBJECTS tendrá el nombre de la tabla en mayúscula. – Thilo

0

Buscar en el esquema, podría evento será capaz de utilizar sys.objects y compruebe si hay un tipo al mismo tiempo .....

Algo así como

2

En la mayoría de los servidores SQL no es un dominio de sistema en el que se puede consultar por la existencia de una mesa. Sin embargo, es altamente específico de implementación. Por ejemplo, en las versiones recientes de MySql:

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

¡Oye! ¿Qué pasa con el voto a la baja? – wallyk

+0

¡Bienvenido a SO! +1 – gavenkoa

1

Es necesario preguntarse catálogo del sistema del servidor. No estoy seguro que la base de datos que quería decir, pero para SQL Server sería:

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

utilizado este en Oracle SQL Developer:

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

Esto devolverá una 0 o 1 si existe la tabla o no en los registros ALL_OBJECTS.

Cuestiones relacionadas