web-dev-qa-db-fra.com

Comment puis-je faire l'équivalent de "SHOW TABLES" dans T-SQL?

J'aimerais effectuer une recherche de tables dans ma base de données SQL Server 2005 Express en fonction du nom de la table. Dans MySQL j'utiliserais SHOW TABLES LIKE "Datasheet%", mais dans T-SQL, une erreur sera générée (une tentative de recherche d'une procédure stockée SHOW échouera).

Est-ce possible, et si oui comment?

32
Andrew Crowe

Cela vous donnera une liste des tables de la base de données actuelle:

Select Table_name as "Table name"
From Information_schema.Tables
Where Table_type = 'BASE TABLE' and Objectproperty 
(Object_id(Table_name), 'IsMsShipped') = 0

Vous trouverez quelques autres bits T-SQL utiles ici: http://www.devx.com/tips/Tip/28529

34
Hector Sosa Jr

Je sais que vous avez déjà accepté une réponse, mais pourquoi ne pas utiliser simplement la méthode beaucoup plus simple sp_tables ?

sp_tables 'Database_Name'
43
JustinD

Essaye ça

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'Datasheet%'
7
PJB

Essaye ça:

USE your_database
go
Sp_tables
go
7
ducnguyen.lotus

Essaye ça :

select * from information_schema.columns
where table_name = 'yourTableName'

recherchez également d'autres vues information_schema.

5
Mladen

Et, puisque INFORMATION_SCHEMA fait partie du standard SQL-92 , bon nombre de bases de données le supportent, y compris MySQL .

3
Mark Brackett

Essayez de suivre

SELECT table_name
FROM information_schema.tables
WHERE
table_name LIKE 'Datasheet%'
2
Tom

MS élimine lentement les méthodes autres que les vues information_schema. donc pour la compatibilité en aval, utilisez toujours ceux-ci.

1
Mladen

Essayez le:

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%'
1
tort

Je sais que c'est une vieille question, mais je viens de la rencontrer.

Normalement, je dirais que vous devez accéder à la vue information_schema.tables, mais après avoir découvert que le PDO ne peut pas accéder à cette base de données à partir d'un autre objet de données, il me fallait trouver une autre manière. Il semblerait que sp_tables 'Database_Name soit un meilleur moyen d’utiliser un utilisateur ou un PDO non privilégié.

0
Chris