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

Я хотел бы выполнить поиск таблиц в моей базе данных SQL Server 2005 Express на основе имени таблицы. В MySQL я использовал бы SHOW TABLES LIKE "Datasheet%", но в T-SQL это вызывает ошибку (он пытается искать хранимую процедуру SHOW и не работает).

Возможно ли это, и если да, то как?

Ответ 1

Это даст вам список таблиц в текущей базе данных:

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

Ответ 2

Я знаю, что вы уже приняли ответ, но почему бы просто не использовать гораздо более простой sp_tables?

sp_tables 'Database_Name'

Ответ 3

Попробуйте следующее:

USE your_database
go
Sp_tables
go

Ответ 4

Попробуйте это

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

Ответ 5

Попробуйте следующее:

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

также ищите другие представления information_schema.

Ответ 7

Попробуйте выполнить

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

Ответ 8

MS медленно отменяет методы, отличные от представлений information_schema. поэтому для прямой совместимости всегда используйте их.

Ответ 9

Попробуйте:

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

Ответ 10

Я знаю, что это старый вопрос, но я только что наткнулся на него.

Обычно я хотел бы получить доступ к представлению information_schema.tables, но, узнав, что PDO не может получить доступ к этой базе данных из другого объекта данных, мне нужно было найти другой способ. Похоже, что sp_tables 'Database_Name - лучший способ использования не привилегированного пользователя или PDO.

Ответ 11

Тот, кто не знает ИМЯ ТАБЛИЦЫ, не сможет получить результат согласно приведенным выше ответам.

ПОПРОБУЙ ЭТО

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='dbo';