2

データベースのいくつかのテーブルに、たとえば MICROSOFT を含む列名があります。

MICROSOFT が発生するすべての場所の列名を知る必要があります。

出来ますか?

はいの場合、クエリは何ですか?

前もって感謝します

4

2 に答える 2

1

したがって、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
于 2013-06-10T07:26:45.997 に答える