45

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

这可能吗?如果可以,怎么做?

4

11 回答 11

56

我知道您已经接受了答案,但为什么不使用更简单的sp_tables呢?

sp_tables 'Database_Name'
于 2008-09-23T22:14:56.453 回答
46

这将为您提供当前数据库中的表列表:

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

于 2008-09-23T22:06:33.727 回答
15

试试这个:

USE your_database
go
Sp_tables
go
于 2013-08-04T04:30:00.900 回答
9

试试这个

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'Datasheet%'
于 2008-09-23T22:05:46.100 回答
5

试试这个 :

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

也寻找其他information_schema意见。

于 2008-09-23T22:04:48.880 回答
5

不知道 TABLE NAME 的人将无法根据上述答案获得结果。

试试这个

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='dbo'; 
于 2019-05-26T12:08:19.177 回答
4

而且,由于INFORMATION_SCHEMA 是 SQL-92 标准的一部分,很多数据库都支持它——包括MySQL

于 2008-09-23T23:18:28.750 回答
3

尝试关注

SELECT table_name
FROM information_schema.tables
WHERE
table_name LIKE 'Datasheet%'
于 2008-09-23T22:06:23.307 回答
3

尝试一下 :

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%'
于 2008-11-08T00:22:18.570 回答
2

MS正在慢慢淘汰information_schema视图以外的方法。因此,为了向前兼容,请始终使用这些。

于 2008-09-23T22:55:42.207 回答
1

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

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

于 2016-02-29T11:26:15.870 回答