Załóżmy, że mam widok, w którym niektóre nazwy kolumn są pseudonimy, jak „nazwisko” w poniższym przykładzie:Znajdź prawdziwą nazwę kolumny aliasu używanego w widoku?
CREATE VIEW myView AS
SELECT
firstName,
middleName,
you.lastName surName
FROM
myTable me
LEFT OUTER JOIN yourTable you
ON me.code = you.code
GO
jestem w stanie odzyskać informacje o widoku za pomocą poglądy INFORMATION_SCHEMA.
Na przykład, zapytanie
SELECT column_name AS ALIAS, data_type AS TYPE
FROM information_schema.columns
WHERE table_name = 'myView'
plony:
---------------- |ALIAS |TYPE | ---------------- |firstName |nchar| |middleName|nchar| |surName |nchar| ----------------
Jednak chciałbym poznać rzeczywistą nazwę kolumny, jak również. Idealnie:
--------------------------- |ALIAS |TYPE |REALNAME | --------------------------- |firstName |nchar|firstName | |middleName|nchar|middleName| |surName |nchar|lastName | ---------------------------
Jak mogę określić, jaka jest rzeczywista nazwa kolumny jest oparty na alias? Musi być jakiś sposób korzystania z tabel Sys i widoków INFORMATION_SCHEMA w celu pobrania tych informacji.
EDIT: mogę zbliżyć się z tego paskudztwa, który jest podobny do Ariona odpowiedź:
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'
Daje:
--------------------------- |ALIAS |TYPE |REALNAME | --------------------------- |firstName |nchar|firstName | |middleName|nchar|middleName| |surName |nchar|code | |surName |nchar|lastName | ---------------------------
ale trzeci rekord jest źle - dzieje się tak z każdym widokiem utworzonym za pomocą klauzuli "JOIN", ponieważ istnieją dwie kolumny z tym samym "column_id", ale w innej tabeli s.
AFAIK, regularne składni dla kolumny pseudonimu używa 'AS': wybierz Columna jako columnB z t – abatishchev
Prawdziwe imię ponieważ widok nie może nawet być kolumną, więc nie ma sposobu, aby to zrobić. Jaka byłaby nazwa kolumny w tym widoku? Utwórz widok jako wybierz 1 b –
Dopóki opcja ['VIEW_METADATA'] (http://msdn.microsoft.com/en-us/library/ms187956.aspx) nie jest ustawiona podczas tworzenia widoku SQL Server zwróci do DB-Library, ODBC i OLE DB API -s metadane trybu przeglądania zawierające informacje o tabeli podstawowej, do której należą kolumny w zestawie wyników. Nigdy jednak nie patrzyłem na ten aspekt. –