2017-02-15 27 views
0

(これについてはStackOverflowで特に2つ目の記事を見てきました。具体的にはthisthisですが、 SQL Serverを使用しています。)SQL Server:列内の特定の値を持つすべての行をすべて検索します。

したがって、特定の列を持つすべてのテーブルを取得するのにthis postを使用しました。その部分はうまく動作し、100個以上のテーブルを返します。

SELECT  c.name AS 'ColumnName' 
      ,t.name AS 'TableName' 
FROM  sys.columns c 
JOIN  sys.tables t ON c.object_id = t.object_id 
WHERE  c.name LIKE 'myColumn' 
ORDER BY TableName 
      ,ColumnName; 

を私が今探していますどのようなものに変更される - 私のこれらのテーブルのそれぞれの行のすべてを取得する方法があります:これは私がそのポストから、使用していることは何ですターゲットの列名に特定の値がありますか?基本的には、システムのすべてのテーブルをリッピングし、特定の列名が特定の値を持つすべての行を選択できるようにしたいと考えています。 (私は後でDELETE、後ですべてのこれらの行を削除しようとするが、最初のSELECTされます。)

本の線に沿って

何か(私は動作しません知っている。それは、例示の目的のためです):

SELECT [row] 
    FROM sys.tables tab 
    JOIN sys.columns col ON col.object_id = tab.object_id 
    WHERE col.name LIKE 'myColumn' AND col.value = 'myVal' 

私が考えることができる唯一の他の選択肢は、最初のクエリの出力を取り出し、それぞれに対してSELECTを実行することです。これは、SQL Server Management Studioで控えめな出力を与えてくれます。

外部ツールやその他のものに頼らずに、これについて簡単な方法がありますか?

答えて

0

INFORMATION_SCHEMAカタログを使用してください。

SELECT TABLE_CATALOG, TABLE_NAME, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%SOME_TEXT%' 
ORDER BY TABLE_CATALOG, TABLE_NAME, COLUMN_NAME 

ここでそれを確認してください:http://rextester.com/JPEZN41582問題がある

+0

が、私はすでにそれに列を持っているすべてのテーブルを取得することができます。列があるすべてのテーブルに特定の値を持つすべての行が必要です。 –

+0

次に動的クエリが必要です。http://stackoverflow.com/a/591991/3270427 – McNets

関連する問題