Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tìm tên cột thực của một bí danh được sử dụng trong một dạng xem?

Với quan điểm này:

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

Những gì tôi có thể thấy, bạn có thể lấy các cột được sử dụng và các bảng được sử dụng bằng cách thực hiện việc này:

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'

Đây là dành cho máy chủ sql 2005+. Xem tài liệu tham khảo tại đây

Chỉnh sửa

Đưa ra cùng một quan điểm. Hãy thử truy vấn này:

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';

Nó trả về cái này cho tôi:

columnName  dataType  alias

id          int       id
author      varchar   author
title       varchar   Name

Điều này cũng được thử nghiệm trong sql 2005+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xử lý NULL trong SQL Server

  2. JPA SQL Server Không ánh xạ phương ngữ cho loại JDBC:-9

  3. 4 cách để kiểm tra xem một bảng có tồn tại hay không trước khi loại bỏ nó trong SQL Server (T-SQL)

  4. TSQL md5 băm khác với C # .NET md5

  5. Bắt Hibernate và SQL Server để chơi tốt với VARCHAR và NVARCHAR