動機
SQLServerを使っていて
大量にあるテーブルの中から特定のカラムを含むテーブルを調べたいシーンが時々あります。
ex)データの洗い替えで別テーブルに同じ名前のカラムがないか(他に影響範囲がないか)
やりかた
SQLServerのカタログビューを使うと簡単にできます。
この例では以下の条件を満たす一覧が取得できます。
- TenantIdもしくはtenant_idを持つテーブル
- Testが先頭につくテーブルは除く
select t.name, c.name
from sys.tables t
inner join sys.columns c on t.object_id = c.object_id
where (c.name like '%TenantId%' or c.name like '%tenant_id%')
and t.name not like 'Test%'
参考