web-dev-qa-db-ja.com

T-SQLで「SHOW TABLES」に相当する方法はありますか?

テーブル名に基づいて、SQL Server 2005 Expressデータベース内のテーブルを検索したいと思います。 MySQLではSHOW TABLES LIKE "Datasheet%"を使用しますが、T-SQLではエラーがスローされます(SHOWストアドプロシージャを検索しようとして失敗します)。

これは可能ですか?

35
Andrew Crowe

これにより、現在のデータベース内のテーブルのリストが表示されます。

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

36
Hector Sosa Jr

すでに回答を受け入れていることは承知していますが、なぜもっと単純な sp_tables を使用しないのですか?

sp_tables 'Database_Name'
46
JustinD

これを試して:

USE your_database
go
Sp_tables
go
9
ducnguyen.lotus

これを試して

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

これを試して :

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

他のinformation_schemaビューも探します。

5
Mladen

そして、 INFORMATION_SCHEMAはSQL-92標準の一部 であるため、多くのデータベースが MySQL を含めてサポートしています。

3
Mark Brackett

フォローしてみてください

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

それを試してみてください :

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

TABLE NAMEを知らない人は、上記の回答に従って結果を取得できません。

これを試して

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

MSは、information_schemaビュー以外のメソッドを徐々に廃止しています。そのため、前方互換性のために常にそれらを使用します。

1
Mladen

これは古い質問であることは知っていますが、私はちょうどそれを見つけました。

通常、information_schema.tablesビューにアクセスすると言いますが、PDOを見つけると、異なるデータオブジェクトからそのデータベースにアクセスできないため、別の方法を見つける必要がありました。 sp_tables 'Database_Nameは、非特権ユーザーまたはPDOを使用する場合のより良い方法です。

0
Chris