Как я могу сделать эквивалент «SHOW TABLES» в T-SQL?


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 июн. 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 не может получить доступ к этой базе данных из другого объекта данных, мне нужно было найти другой способ. Похож, что sp_tables 'Database_Name - лучший способ использования не привилегированного пользователя или PDO.