【发布时间】:2010-09-12 13:24:13
【问题描述】:
我想根据表名在我的 SQL Server 2005 Express 数据库中查找表。在MySQL 中我会使用SHOW TABLES LIKE "Datasheet%",但在T-SQL 中这会引发错误(它会尝试查找SHOW 存储过程并失败)。
这可能吗?如果可以,怎么做?
【问题讨论】:
标签: sql tsql sql-server-2005
我想根据表名在我的 SQL Server 2005 Express 数据库中查找表。在MySQL 中我会使用SHOW TABLES LIKE "Datasheet%",但在T-SQL 中这会引发错误(它会尝试查找SHOW 存储过程并失败)。
这可能吗?如果可以,怎么做?
【问题讨论】:
标签: sql tsql sql-server-2005
我知道你已经接受了答案,但为什么不直接使用更简单的sp_tables?
sp_tables 'Database_Name'
【讨论】:
这将为您提供当前数据库中的表列表:
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
【讨论】:
试试这个:
USE your_database
go
Sp_tables
go
【讨论】:
试试这个
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'Datasheet%'
【讨论】:
试试这个:
select * from information_schema.columns
where table_name = 'yourTableName'
同时寻找其他information_schema 视图。
【讨论】:
不知道 TABLE NAME 的人将无法根据上述答案获得结果。
试试这个
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='dbo';
【讨论】:
而且,由于 INFORMATION_SCHEMA is part of the SQL-92 standard,很多数据库都支持它 - 包括 MySQL。
【讨论】:
尝试关注
SELECT table_name
FROM information_schema.tables
WHERE
table_name LIKE 'Datasheet%'
【讨论】:
试试看:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%'
【讨论】:
MS 正在逐步淘汰除information_schema 视图之外的方法。因此,为了向前兼容,请始终使用这些。
【讨论】:
我知道这是一个老问题,但我刚刚遇到它。
通常我会说访问 information_schema.tables 视图,但在发现 PDO 无法从不同的数据对象访问该数据库时,我需要找到不同的方式。看起来sp_tables 'Database_Name 是使用非特权用户或 PDO 时更好的方法。
【讨论】: