sql >> データベース >  >> RDS >> Sqlserver

データベース全体で列名を検索する SQL クエリ

    したがって、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
      

    1. Microsoft SQLServer2012へのAdventureWorksデータベースサンプルのインストール

    2. MySQLの2つの単一列インデックスと1つの2列インデックス?

    3. OracleでTIMESTAMP形式の値の違いを見つける方法は?

    4. 複数行の日付の差の合計Mysql