114

特定のデータベースのストアドプロシージャ内の文字列を検索するには、次を使用します。

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

特定のデータベース「DBname」内のテーブル名を検索するように上記を修正するのは簡単ですか?

4

9 に答える 9

181

私はこれを使用していて、正常に動作します

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME LIKE '%%'
于 2014-03-03T14:03:38.837 に答える
90
select name
  from DBname.sys.tables
 where name like '%xxx%'
   and is_ms_shipped = 0; -- << comment out if you really want to see them
于 2012-10-26T11:03:56.190 に答える
13

サーバー全体のすべてのデータベースのすべてのテーブルを調べて出力を取得する場合は、文書化されていないsp_MSforeachdbプロシージャを使用できます。

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''
于 2017-12-30T18:06:57.513 に答える
9

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

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

于 2019-03-21T17:04:10.240 に答える
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;
于 2012-10-26T11:07:21.147 に答える
5

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

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE Lower(TABLE_NAME) LIKE Lower('%%')
于 2018-11-29T11:25:53.517 に答える
3

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

テーブルのリストを検索するときはいつでも、一般的にはすべてのテーブルから選択するか、削除したいと思います。以下は、それらのスクリプトを生成するスクリプトです。

生成されたselectスクリプトは、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; 
于 2016-03-29T09:07:58.143 に答える
2

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

show tables like '%tableName%'
于 2017-02-08T13:22:12.977 に答える
2

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

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

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

于 2019-02-11T11:43:54.737 に答える