Sql-Server-2008

如何從 SQL 語句中獲取列名?

  • May 8, 2020

有沒有簡單的方法來獲取從 SQL 語句返回的列名?

如:

SELECT * 
FROM ATable 
FULL OUTER JOIN BTable b ON a.SOME_KEY = b.SOME_KEY
FULL OUTER JOIN CTable c ON b.SOME_ID = c.SOME_ID
FULL OUTER JOIN DTable d ON a.SOME_OTHER_ID = d.SOME_OTHER_ID
WHERE a.SOME_KEY = @key AND c.SOME_SERIAL_NR = @serialnumber

我似乎無法得到

select column_name 
from information_schema.columns 
where table_name = 'table' 

在我目前的環境中工作

這應該這樣做:

SELECT column_name
FROM INFORMATION_SCHEMA.columns 
WHERE table_name IN ('ATable','BTable','CTable','DTable')

我更喜歡這個查詢,原因有很多:

SELECT 
 [table]  = s.name + N'.' + t.name, 
 [column] = c.name
FROM sys.columns AS c
INNER JOIN sys.tables AS t
 ON c.[object_id] = t.[object_id]
INNER JOIN sys.schemas AS s
 ON t.[schema_id] = s.[schema_id]
WHERE t.name IN (N'ATable', N'BTable', N'CTable', N'DTable');
  1. 您可以分辨出哪一列來自哪個表
  2. 您可以看到架構(架構很重要
  3. 您避免了損壞和不完整的INFORMATION_SCHEMA視圖 - 這不會導致此特定查詢出現問題,但在某些情況下您無法依賴元數據INFORMATION_SCHEMA
  4. N底層數據類型為nchar/nvarchar.
  5. 您還應該養成使用正確語句終止符的習慣

我的解決方案的缺點:

  1. 打字需要幾秒鐘的時間
  2. 它不能在 Oracle、MySQL、Postgres 等上執行。

引用自:https://dba.stackexchange.com/questions/118975