特定のデータベースのストアドプロシージャ内の文字列を検索するには、次を使用します。
USE DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
特定のデータベース「DBname」内のテーブル名を検索するように上記を修正するのは簡単ですか?
特定のデータベースのストアドプロシージャ内の文字列を検索するには、次を使用します。
USE DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
特定のデータベース「DBname」内のテーブル名を検索するように上記を修正するのは簡単ですか?
私はこれを使用していて、正常に動作します
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%%'
select name
from DBname.sys.tables
where name like '%xxx%'
and is_ms_shipped = 0; -- << comment out if you really want to see them
サーバー全体のすべてのデータベースのすべてのテーブルを調べて出力を取得する場合は、文書化されていないsp_MSforeachdbプロシージャを使用できます。
sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%Table_Names%'''
実行するだけでなく、データベース名をパラメーターとして渡したいと想定しています。
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;
これが古いスレッドであることは知っていますが、大文字と小文字を区別しない検索を希望する場合は、次のようにします。
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE Lower(TABLE_NAME) LIKE Lower('%%')
@[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;
showコマンドを使用することもできます。
show tables like '%tableName%'
私はあなたが持っているすべてのスキーマのための簡単な解決策を投稿したいと思います。MySQL DBを使用している場合は、スキーマからすべてのテーブル名を取得し、それにWHERE-LIKE条件を追加するだけです。次のように、通常のコマンドラインを使用して実行することもできます。
SHOW TABLES WHERE tables_in_<your_shcema_name> LIKE '%<table_partial_name>%';
ここでtables_in_<your_shcema_name>
、列のSHOW TABLES
コマンド名を返します。