假设我有一个视图,其中一些列名是别名,例如本例中的"surName":
CREATE VIEW myView AS
SELECT
firstName,
middleName,
you.lastName surName
FROM
myTable me
LEFT OUTER JOIN yourTable you
ON me.code = you.code
GO
Run Code Online (Sandbox Code Playgroud)
我可以使用INFORMATION_SCHEMA视图检索有关视图的一些信息.
例如,查询
SELECT column_name AS ALIAS, data_type AS TYPE
FROM information_schema.columns
WHERE table_name = 'myView'
Run Code Online (Sandbox Code Playgroud)
收益率:
---------------- |ALIAS |TYPE | ---------------- |firstName |nchar| |middleName|nchar| |surName |nchar| ----------------
但是,我想知道实际的列名.理想的情况是:
--------------------------- |ALIAS |TYPE |REALNAME | --------------------------- |firstName |nchar|firstName | |middleName|nchar|middleName| |surName |nchar|lastName | ---------------------------
如何根据别名确定实际列名称是什么? 必须有一些方法来使用sys表和/或INFORMATION_SCHEMA视图来检索此信息.
编辑: 我可以接受这种令人厌恶的东西,这与Arion的答案相似:
SELECT
c.name AS ALIAS,
ISNULL(type_name(c.system_type_id), t.name) AS DATA_TYPE,
tablecols.name AS REALNAME …Run Code Online (Sandbox Code Playgroud)