テーブル名の検索


97

ストアドプロシージャで文字列を検索するには、以下を使用します。

use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'

上記を修正して、特定のdb "DBname"のテーブル名を検索するのは簡単ですか?

回答:



87
select name
  from DBname.sys.tables
 where name like '%xxx%'
   and is_ms_shipped = 0; -- << comment out if you really want to see them

行をコメント化しand is_ms_shipped = 0;てもあまり効果がないようです
whytheq

2
通常非表示になるのは、データベースダイアグラムサポートテーブルか、1つだけです。関数/手順を探すときに、より便利です。
RichardTheKiwi

スキーマ名を追加しないのはなぜですか?DBNAME.sys.tablesからt.schema_id、s.name、t.Nameを選択します。 0
アクロネオス2016

10

サーバー全体のすべてのデータベースのすべてのテーブルを調べて出力を取得する場合は、ドキュメントに記載されていないsp_MSforeachdbプロシージャを使用できます。

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''

3
この回答は、テーブルがどのデータベースにあるかわからない場合にのみ有効です
Matthew

7

単に実行するのではなく、データベース名をパラメーターとして渡したいと想定しています。

SELECT  *
FROM    DBName.sys.tables
WHERE   Name LIKE '%XXX%'

その場合、動的SQLを使用してクエリにdbnameを追加できます。

DECLARE @DBName NVARCHAR(200) = 'YourDBName',
        @TableName NVARCHAR(200) = 'SomeString';

IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE Name = @DBName)
    BEGIN
        PRINT 'DATABASE NOT FOUND';
        RETURN;
    END;

DECLARE @SQL NVARCHAR(MAX) = '  SELECT  Name
                                FROM    ' + QUOTENAME(@DBName) + '.sys.tables
                                WHERE   Name LIKE ''%'' + @Table + ''%''';

EXECUTE SP_EXECUTESQL @SQL, N'@Table NVARCHAR(200)', @TableName;

5

[フィルター]ボタンを使用して、特定の文字列を含むテーブルをフィルターすることもできます。ストアドプロシージャとビューでも同じことができます。

ここに画像の説明を入力してください


4

@ [RichardTheKiwi]の答えに追加します。

テーブルのリストを検索するときは常に、すべてのテーブルから選択するか、テーブルを削除します。以下は、これらのスクリプトを生成するスクリプトです。

生成された選択スクリプトはtableName列も追加するので、見ているテーブルがわかります。

select 'select ''' + name + ''' as TableName, * from ' + name as SelectTable,
'delete from ' + name as DeleteTable
from sys.tables
where name like '%xxxx%'
and is_ms_shipped = 0; 

3

showコマンドを使用することもできます。

show tables like '%tableName%'

6
これは、sql-serverとタグ付けされた質問のMySQL構文です
Mike Guthrie

3

私はこれが古いスレッドであることを知っていますが、大文字と小文字を区別しない検索を希望する場合:

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE Lower(TABLE_NAME) LIKE Lower('%%')

2

私はあなたが持っているすべてのスキーマのための簡単な解決策を投稿したいと思います。MySQL DBを使用している場合は、スキーマからすべてのテーブルの名前を取得し、それにWHERE-LIKE条件を追加するだけです。また、次のように通常のコマンドラインで実行することもできます。

SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';

where tables_in_<your_shcema_name>SHOW TABLESコマンドの列名を返します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.