548 votos

SQL Server: Comprobar si la tabla existe

Me gustaría que este sea el último debate sobre cómo comprobar si existe una tabla en SQL Server 2000/2005 el uso de la Instrucción SQL.

Cuando Google por la respuesta, entonces muchas respuestas diferentes. Hay un funcionario/hacia atrás y hacia adelante compatible forma de hacerlo?

Aquí hay dos posibles formas de hacerlo. Que uno de los dos es el nivel y la mejor forma de hacerlo?

Primera forma:

IF EXISTS (SELECT 1 
           FROM INFORMATION_SCHEMA.TABLES 
           WHERE TABLE_TYPE='BASE TABLE' 
           AND TABLE_NAME='mytablename') 
   SELECT 1 AS res ELSE SELECT 0 AS res;

Segunda manera:

IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL 
   SELECT 1 AS res ELSE SELECT 0 AS res;

MySQL proporciona la simple MOSTRAR TABLAS LIKE '%tablename%'; declaración. Estoy buscando algo similar.

690voto

akmad Puntos 7059

Para consultas de este tipo es siempre mejor utilizar un INFORMATION_SCHEMA ver. Estos puntos de vista (mayormente), estándar a través de diferentes bases de datos y rara vez cambian de versión a versión.

Para comprobar si existe una tabla de uso:

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'TheSchema' 
                 AND  TABLE_NAME = 'TheTable'))
BEGIN
    --Do Stuff
END

146voto

jbloomer Puntos 2000

También tenga en cuenta que si por alguna razón usted necesita para comprobar una tabla temporal que usted puede hacer esto:

if OBJECT_ID('tempdb..#test') is not null
 --- temp table exists

110voto

Bob King Puntos 12913

Siempre utilizamos el OBJECT_ID estilo para siempre como recuerdo

IF OBJECT_ID('*objectName*', 'U') IS NOT NULL 

22voto

Larry Leonard Puntos 111

Buscando una tabla en otra base de datos:

if exists (select * from MyOtherDatabase.sys.tables where name = 'MyTable')
    print 'Exists'

13voto

Vinko Vrsalovic Puntos 116138

Utilizando el Esquema de Información es el Estándar SQL manera de hacerlo, por lo que deben ser utilizados por todas las bases de datos que lo soporte.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X