データベースのいくつかのテーブルに、たとえば MICROSOFT を含む列名があります。
MICROSOFT が発生するすべての場所の列名を知る必要があります。
出来ますか?
はいの場合、クエリは何ですか?
前もって感謝します
データベースのいくつかのテーブルに、たとえば MICROSOFT を含む列名があります。
MICROSOFT が発生するすべての場所の列名を知る必要があります。
出来ますか?
はいの場合、クエリは何ですか?
前もって感謝します
したがって、SQL Server を使用している場合は、これを実行して、すべてのテーブルのすべての列を見つけることができます。
select
'SELECT * FROM '
+ st.name +
' WHERE ' +
sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id
このクエリの出力を使用して、すべてのテーブルの各列の SELECT のすべての可能な組み合わせのリストを作成します。
これはすべてのコマンドのリストを出力するだけなので、それらを実行する必要があります。各コマンドを実行するには、結果のリスト全体を移動するカーソルを作成する必要があります。
前のステートメントをカーソルで囲み、SELECT
各クエリを調べて実行します。したがって、コードは次のようになります
DECLARE @myCommand VARCHAR(1000)
DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
select
'SELECT * FROM '
+ st.name +
' WHERE ' +
sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id
OPEN c
FETCH NEXT FROM c INTO @myCommand
WHILE @@FETCH_STATUS = 0
BEGIN
sp_executesql @myCommand
FETCH NEXT FROM c INTO @myCommand
END
CLOSE c
DEALLOCATE c