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?
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
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'
Essaye ça
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'Datasheet%'
Essaye ça:
USE your_database
go
Sp_tables
go
Essaye ça :
select * from information_schema.columns
where table_name = 'yourTableName'
recherchez également d'autres vues information_schema
.
Et, puisque INFORMATION_SCHEMA fait partie du standard SQL-92 , bon nombre de bases de données le supportent, y compris MySQL .
Essayez de suivre
SELECT table_name
FROM information_schema.tables
WHERE
table_name LIKE 'Datasheet%'
MS
élimine lentement les méthodes autres que les vues information_schema
. donc pour la compatibilité en aval, utilisez toujours ceux-ci.
Essayez le:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%'
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é.