我如何從SQL Server中的表中獲取列名?


Answers

您可以使用存儲過程sp_columns,它將返回有關給定表的所有列的信息。 更多信息可以在這裡找到http://msdn.microsoft.com/en-us/library/ms176077.aspx

你也可以通過SQL查詢來完成。 有些事情應該會有所幫助 -

SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName') 

或者一個變化是:

SELECT   o.Name, c.Name
FROM     sys.columns c 
         JOIN sys.objects o ON o.object_id = c.object_id 
WHERE    o.type = 'U' 
ORDER BY o.Name, c.Name

這將從所有表中獲取所有列,按表名稱排序,然後按列名排序。

Question

我想查詢表中所有列的名稱。 我發現如何做到這一點:

但是我需要知道:這怎麼能在Microsoft SQL Server (2008在我的情況下)中完成?




- 這是用於記錄大型數據庫進行轉換的另一種變體(編輯為 - 刪除靜態列)

SELECT o.Name                   as Table_Name
     , c.Name                   as Field_Name
     , t.Name                   as Data_Type
     , t.length                 as Length_Size
     , t.prec                   as Precision_
FROM syscolumns c 
     INNER JOIN sysobjects o ON o.id = c.id
     LEFT JOIN  systypes t on t.xtype = c.xtype  
WHERE o.type = 'U' 
ORDER BY o.Name, c.Name

- 在左連接中,將c.type替換為c.xtype以獲取varchar類型




SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'



SELECT c.Name 
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name



SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable 
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position



您可以在SQL Server 2008中使用sp_help

sp_help <table_name>;

快捷鍵為上述命令select table name (突出顯示它)並按下ALT + F1




你可以試試這個。它給出了所有的列名和它們各自的數據類型。

desc <TABLE NAME> ;



它將檢查給定的table是否是基表

SELECT 
    T.TABLE_NAME AS 'TABLE NAME',
    C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
    WHERE   T.TABLE_TYPE='BASE TABLE'
            AND T.TABLE_NAME LIKE 'Your Table Name'



Related