ダウンロード ソースコードのダウンロード (1.7 KB)
列名を検索するためのSELECTソリューション
データベースの構造は知っていても、テーブルや列の完全な名前は思い出せないということもあるでしょう。そんなときには、SQL Server 2000で次のSELECTステートメントを実行してください。
SELECT c.Table_Schema, c.Table_name, c.Column_name FROM INFORMATION_SCHEMA.COLUMNS c INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.Table_schema = t.Table_SCHEMA AND c.Table_name = t.Table_name WHERE TABLE_TYPE = 'BASE TABLE' AND c.Column_name LIKE <検索文字列>
上記のスクリプトはSQL Server 2000、2005、および2008で機能します。次のスクリプトは2005および2008の新しいスキーマテーブルをベースにしており、前方互換性があります。
SELECT t.name AS TableName,
sc.name AS SchemaName,
c.name AS ColumnName,
types.name AS TypeName,
st.name AS TypeSchemaName,
t.type AS type
FROM sys.all_columns c INNER JOIN sys.all_objects t WITH (NOLOCK) ON c.object_id=t.object_id
LEFT JOIN sys.schemas sc WITH (NOLOCK) ON t.schema_id=sc.schema_id
LEFT JOIN sys.types types WITH (NOLOCK) ON c.user_type_id=types.user_type_id
LEFT JOIN sys.schemas st WITH (NOLOCK) ON st.schema_id=types.schema_id
WHERE t.type IN ('U') AND c.Column_name LIKE <検索文字列>
ORDER BY c.object_id, c.column_id
完全な名前を思い出せないテーブルや列をSQL Serverデータベースから検索するには、次のようにしてSELECTステートメントを実行します。
SELECT c.Table_Schema, c.Table_name, c.Column_name FROM INFORMATION_SCHEMA.COLUMNS c INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.Table_schema = t.Table_SCHEMA AND c.Table_name = t.Table_name WHERE TABLE_TYPE = 'BASE TABLE' AND c.Column_name LIKE '%order%'
図2は、Northwindに対して上記のステートメントを実行した結果です。
ご覧のように、SELECTは「order」という文字列が含まれている列名のインスタンスをいくつか返しています。BASE TABLEはユーザーが作成したテーブルのことであり、システムテーブルではありません(information_schemaテーブル内では、テーブルはこう定義されています)。
おわりに
詳細がわかっているエンティティの検索は簡単ですが、テーブルや列の名前がわからないときの検索はもっと手間がかかります。この記事で紹介したストアドプロシージャを使用すると、構造がわからないテーブルから特定の値を検索できます。また、SELECTステートメントを使用すると、パターンやキーワードに一致する名前の列を突き止めることができます。どちらのソリューションもぜひ装備したい有用なツールです。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Francisco Tapia(Francisco Tapia)
ある大手製造会社のデータベース管理者。SQL Serverはバージョン6.5の頃から使用。詳しくはsqlthis.blogspot.comを参照。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Susan Sales Harkins(Susan Sales Harkins)
独立コンサルタントとして活動するかたわら、データベーステクノロジに関する記事や書籍を執筆。最近の著書は『Mastering Microsoft SQL Server 2005 Express』(Mike Gunderloyと共著、Sybex刊)。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

