2008-09-23 12 views
31

Mi piacerebbe fare una ricerca di tabelle nel mio database SQL Server 2005 Express in base al nome della tabella. In MySQL userei SHOW TABLES LIKE "Datasheet%", ma in T-SQL questo genera un errore (prova a cercare una stored procedure SHOW e fallisce).Come posso fare l'equivalente di "SHOW TABLES" in T-SQL?

E 'possibile, e se sì, come?

risposta

32

Questo vi darà un elenco delle tabelle nel database corrente:

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

Alcuni altri pezzi T-SQL utili può essere trovato qui: http://www.devx.com/tips/Tip/28529

5

Prova questo:

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

anche cercare altri information_schema vista.

7

Prova questa

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

prova a seguire

SELECT table_name 
FROM information_schema.tables 
WHERE 
table_name LIKE 'Datasheet%' 
40

So che hai già accettato una risposta, ma perché non usare semplicemente la più semplice sp_tables?

sp_tables 'Database_Name' 
+0

Questa è una soluzione molto migliore - posso effettivamente memorizzarlo! Grazie –

1

MS sta lentamente progressiva eliminazione metodi diversi da information_schema vista. quindi per compatibilità diretta usa sempre quelli.

1

Prova ora:

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE '%' 
4

Prova questa:

USE your_database 
go 
Sp_tables 
go 
0

So che questa è una vecchia questione, ma Sono appena attraverso di esso.

Normalmente direi di accedere alla vista information_schema.tables, ma alla ricerca del PDO non è possibile accedere a quel database da un altro oggetto dati che avevo bisogno di trovare in un modo diverso. Sembra che sp_tables 'Database_Name sia un modo migliore quando si utilizza un utente o un PDO non privilegiato.