Giả sử tôi có một cái nhìn trong đó một số tên cột là bí danh, như "họ" trong ví dụ này:Tìm tên cột thực của một bí danh được sử dụng trong chế độ xem?
CREATE VIEW myView AS
SELECT
firstName,
middleName,
you.lastName surName
FROM
myTable me
LEFT OUTER JOIN yourTable you
ON me.code = you.code
GO
Tôi có thể lấy một số thông tin về quan điểm sử dụng các quan điểm INFORMATION_SCHEMA.
Ví dụ, truy vấn
SELECT column_name AS ALIAS, data_type AS TYPE
FROM information_schema.columns
WHERE table_name = 'myView'
sản lượng:
---------------- |ALIAS |TYPE | ---------------- |firstName |nchar| |middleName|nchar| |surName |nchar| ----------------
Tuy nhiên, tôi muốn biết tên cột thực tế là tốt. Lý tưởng nhất là:
--------------------------- |ALIAS |TYPE |REALNAME | --------------------------- |firstName |nchar|firstName | |middleName|nchar|middleName| |surName |nchar|lastName | ---------------------------
Làm thế nào tôi có thể xác định những gì các tên cột thực tế dựa trên bí danh? Phải có một số cách để sử dụng các bảng sys và/hoặc khung nhìn INFORMATION_SCHEMA để lấy thông tin này.
EDIT: tôi có thể nhận chặt chẽ với sự ghê tởm này, đó là tương tự như Arion của câu trả lời:
SELECT
c.name AS ALIAS,
ISNULL(type_name(c.system_type_id), t.name) AS DATA_TYPE,
tablecols.name AS REALNAME
FROM
sys.views v
JOIN sys.columns c ON c.object_id = v.object_id
LEFT JOIN sys.types t ON c.user_type_id = t.user_type_id
JOIN sys.sql_dependencies d ON d.object_id = v.object_id
AND c.column_id = d.referenced_minor_id
JOIN sys.columns tablecols ON d.referenced_major_id = tablecols.object_id
AND tablecols.column_id = d.referenced_minor_id
AND tablecols.column_id = c.column_id
WHERE v.name ='myView'
sản lượng này:
--------------------------- |ALIAS |TYPE |REALNAME | --------------------------- |firstName |nchar|firstName | |middleName|nchar|middleName| |surName |nchar|code | |surName |nchar|lastName | ---------------------------
nhưng kỷ lục thứ ba là sai - điều này xảy ra với bất kỳ chế độ xem nào được tạo bằng cách sử dụng mệnh đề "JOIN", bởi vì có hai cột có cùng cột "column_id", nhưng trong bảng khác nhau S.
afaik, cú pháp thường xuyên cho bí danh cột được sử dụng 'AS': chọn columnA như columnB từ t – abatishchev
Tên thật cho một lượt xem có thể thậm chí không phải là một cột, vì vậy không có cách nào để làm điều này. Tên của cột trong chế độ xem này là gì? Tạo chế độ xem a khi chọn 1 b –
Miễn là tùy chọn ['VIEW_METADATA'] (http://msdn.microsoft.com/en-us/library/ms187956.aspx) không được đặt khi tạo chế độ xem SQL Server sẽ trả về với DB-Library, ODBC và OLE DB API Siêu dữ liệu chế độ duyệt bao gồm thông tin về bảng cơ sở mà các cột trong tập hợp kết quả thuộc về. Không bao giờ nhìn vào khía cạnh này bản thân mình mặc dù. –