Come posso fare l'equivalente di "SHOW TABLES" in T-SQL?


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).

E 'possibile, e se sì, come?

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 26 giu. 152015-06-26 14:00:35


1

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


3

E, dal INFORMATION_SCHEMA is part of the SQL-92 standard, un buon numero di database lo supportano, incluso MySQL.


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.