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

ビューで使用されているエイリアスの実際の列名を見つけますか?

    この見方を考えると:

    CREATE VIEW viewTest
    AS
    SELECT
        books.id,
        books.author,
        Books.title AS Name
    FROM
        Books
    

    私が見ることができるのは、これを行うことで、使用される列と使用されるテーブルを取得できることです。

    SELECT * 
    FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE AS UsedColumns 
    WHERE UsedColumns.VIEW_NAME='viewTest'
    
    SELECT * 
    FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE AS UsedTables 
    WHERE UsedTables.VIEW_NAME='viewTest'
    

    これはSQLServer2005以降用です。こちらのリファレンスをご覧ください

    編集

    同じ見方をしてください。このクエリを試してください:

    SELECT
        c.name AS columnName,
        columnTypes.name as dataType,
        aliases.name as alias
    FROM 
    sys.views v 
    JOIN sys.sql_dependencies d 
        ON d.object_id = v.object_id
    JOIN .sys.objects t 
        ON t.object_id = d.referenced_major_id
    JOIN sys.columns c 
        ON c.object_id = d.referenced_major_id 
    JOIN sys.types AS columnTypes 
        ON c.user_type_id=columnTypes.user_type_id
        AND c.column_id = d.referenced_minor_id
    JOIN sys.columns AS aliases
        on c.column_id=aliases.column_id
        AND aliases.object_id = object_id('viewTest')
    WHERE
        v.name = 'viewTest';
    

    これが返されます:

    columnName  dataType  alias
    
    id          int       id
    author      varchar   author
    title       varchar   Name
    

    これはSQL2005+でもテストされています



    1. Postgresqlのデータベース照合、Ctypeを変更します

    2. MariaDBでのLIKEオペレーターのしくみ

    3. データベース要約レポートを送信する自動電子メールシステム

    4. T-SQLを使用してリンクサーバー上にテーブルを作成する2つの方法