如何在T-SQL中执行“SHOW TABLES”的等效操作?


31

我想根据表名查询我的SQL Server 2005 Express数据库中的表。在MySQL我会用SHOW TABLES LIKE "Datasheet%",但在T-SQL这会抛出一个错误(它试图寻找一个SHOW存储过程并失败)。

这是可能的,如果是这样,如何?

32

这会给你的表在当前数据库中的表:

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

一些其他有用的T-SQL位可以在这里找到:http://www.devx.com/tips/Tip/28529


5

试试这个:

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

也寻找其他information_schema意见。


7

试试这个

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

2

尝试以下

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

40

我知道你已经接受了答案,但为什么不使用简单得多的sp_tables

sp_tables 'Database_Name' 
  0

这是一个更好的解决方案 - 我实际上可以记住它!谢谢 26 6月. 152015-06-26 14:00:35


1

MS慢慢淘汰比information_schema意见等方法。因此为了向前兼容,始终使用这些。


3

而且,自从INFORMATION_SCHEMA is part of the SQL-92 standard以来,许多数据库都支持它 - 包括MySQL


1

试试:

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

4

试试这个:

USE your_database 
go 
Sp_tables 
go 

0

我知道这是一个老问题,但我刚刚碰到它。

通常我会说访问information_schema.tables视图,但发现PDO不能从不同的数据对象访问数据库,我需要找到一种不同的方式。使用非特权用户或PDO时,看起来像sp_tables 'Database_Name是更好的方法。