Sql-Server-2008
如何從 SQL 語句中獲取列名?
有沒有簡單的方法來獲取從 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');
- 您可以分辨出哪一列來自哪個表
- 您可以看到架構(架構很重要)
- 您避免了損壞和不完整的
INFORMATION_SCHEMA
視圖 - 這不會導致此特定查詢出現問題,但在某些情況下您無法依賴元數據INFORMATION_SCHEMA
- 當
N
底層數據類型為nchar/nvarchar
.- 您還應該養成使用正確語句終止符的習慣
我的解決方案的缺點:
- 打字需要幾秒鐘的時間
- 它不能在 Oracle、MySQL、Postgres 等上執行。