[sql] 테이블의 열 이름을 어떻게 반환합니까?

SQL Server 2008을 사용하여 테이블의 열 이름을 어떻게 반환합니까? 즉, 테이블에는 이러한 열-id, 이름, 주소, 국가가 포함되어 있으며 데이터로 반환하고 싶습니다.



답변

2008 버전에 더 쉬운 방법이 있는지 확실하지 않습니다.

USE [Database Name]
SELECT COLUMN_NAME,*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' AND TABLE_SCHEMA='YourSchemaName'


답변

가장 쉬운 방법입니다

exec sp_columns [tablename]


답변

이 같은?

sp_columns @table_name=your table name


답변

한 가지 방법은 syscolumns를 쿼리하는 것입니다.

select
   syscolumns.name as [Column],
   syscolumns.xusertype as [Type],
   sysobjects.xtype as [Objtype]
from
   sysobjects
inner join
   syscolumns on sysobjects.id = syscolumns.id
where sysobjects.xtype = 'u'
and   sysobjects.name = 'MyTableName'
order by syscolumns.name


답변

OBJECT_ID () 함수를 사용하여 테이블의 ID를 찾기 때문에 위의 제안보다 약간 더 쉽습니다 . 해당 ID를 가진 모든 열은 테이블의 일부입니다.

SELECT *
  FROM syscolumns
 WHERE id=OBJECT_ID('YOUR_TABLE') 

필자는 비슷한 쿼리를 사용하여 내가 알고있는 열이 최신 버전의 일부인지 확인합니다. where 절에 {AND name = ‘YOUR_COLUMN’}을 추가 한 것과 동일한 쿼리입니다.

IF EXISTS (
        SELECT *
          FROM syscolumns
         WHERE id=OBJECT_ID('YOUR_TABLE')
           AND name='YOUR_COLUMN'
        )
BEGIN
    PRINT 'Column found'
END


답변

이 시도

select * from <tablename> where 1=2

………………………………………..


답변

다음은 위의 첫 번째 제안 쿼리와 같지만 때로는 작동하도록 데이터베이스를 지정해야합니다. 쿼리는 TABLE_SCHEMA를 지정하지 않고 작동해야합니다.

SELECT COLUMN_NAME
FROM   YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME = 'YOUR_TABLE_NAME' AND TABLE_SCHEMA = 'YOUR_DB_NAME'