私の目的は、特定の値を持つ特定の列を持つデータベースからすべてのテーブルを見つけることです。 すなわち 私は、テーブルのいくつかは、列名を持つ「名前ID」などの表1、表2、表3、表4、表5、表6、表7これらの表に特定の値を持つ列を含むすべてのテーブルを検索するにはどうすればよいですか?
のようなテーブルを持っています。今度は、カラム名が 'NameID'で値が100であるテーブルを探したいと思います。
SQLクエリを書く方法を教えてください。
私の目的は、特定の値を持つ特定の列を持つデータベースからすべてのテーブルを見つけることです。 すなわち 私は、テーブルのいくつかは、列名を持つ「名前ID」などの表1、表2、表3、表4、表5、表6、表7これらの表に特定の値を持つ列を含むすべてのテーブルを検索するにはどうすればよいですか?
のようなテーブルを持っています。今度は、カラム名が 'NameID'で値が100であるテーブルを探したいと思います。
SQLクエリを書く方法を教えてください。
テーブルを一覧表示できない場合は、クエリで実行することはできません。あなたは動的にクエリを作成する必要があります(Paul Alan Taylorが示したようなテーブルを使用して)。
これを適応してみてください。
http://ubercode.bleakllc.com/2008/11/find-any-value-in-any-database-column.html
すでに列を持っているすべてのテーブルを知っている、とテーブルのリストは変更されていない場合、あなたは
のような単純なクエリを行うことができますSelect 'Table1' from table1 where id = 100
UNION
Select 'Table2' from table2 where id = 100
UNION
...
UNIONはすべての二重引用符を捨てるので、複数の行が100のIDを持つ場合、UNION ALLを必要としない場合は1回だけ表を表示します。
もちろん、INFORMATION_SCHEMAを使用すると、MS SQLで自己記述することができます。
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'NameID'
屋が真のthatsしかし、私はあなたの場合は100 –
似たようなことが必要でしたが、私たちにとってはTransactionIDでした。私はPaul Alan Taylor氏とMakeMinePanacea氏の提案を受け取り、カーソルを追加しました。それは素早く汚れていますが、1分間働きます。
DECLARE @TableName varchar(MAX)
DECLARE @Sql VARCHAR(MAX)
set @Sql = ''
DECLARE @Tables CURSOR
SET @Tables = CURSOR FOR
SELECT t.Table_Name
FROM INFORMATION_SCHEMA.COLUMNS c
JOIN INFORMATION_SCHEMA.TABLES t on c.Table_Name = t.Table_Name
WHERE COLUMN_NAME = 'TransactionID' and table_type = 'BASE TABLE'
OPEN @Tables
FETCH NEXT
FROM @Tables INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
if len(@Sql) > 0
BEGIN
set @SQL = @SQL + ' UNION ALL '
END
set @Sql = @Sql + 'SELECT ''' + @TableName + ''' FROM [' + @TableName + '] WHERE transactionid = 100'
FETCH NEXT
FROM @Tables INTO @TableName
END
CLOSE @Tables
DEALLOCATE @Tables
exec (@Sql)
次のパラメータを使用して、私の検索スクリプトを使用することができます。
SET @SearchStrColumnValue = '100' /* use LIKE syntax */
SET @FullRowResult = 1
SET @SearchStrTableName = 'TABLE%' /* NULL for all tables, uses LIKE syntax */
SET @SearchStrColumnName = 'NameID' /* NULL for all columns, uses LIKE syntax */
SET @SearchStrInXML = 0 /* Searching XML data may be slow */
http://fullparam.wordpress.com/2012/09/07/fck-it-i-am-going-to-search-all-tables-all-collumns/
の値を持つカラムの名前ID」を持つテーブルたいですあなたがしたいかもしれないテーブル名だけを必要としますテーブル1からトップ1 'テーブル1'を選択します。ここではid = 100ユニオン... –