복붙노트

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

SQL

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

어떻게 2008 SQL Server를 사용하여 테이블의 열 이름을 반환? 즉 테이블이 columns- ID, 이름, 주소, 국가를 포함하고 나는 데이터로 다음을 반환합니다.

해결법

  1. ==============================

    1.2008 버전에서 쉬운 방법이 있는지 확실하지.

    2008 버전에서 쉬운 방법이 있는지 확실하지.

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

    2.이것은 가장 쉬운 방법입니다

    이것은 가장 쉬운 방법입니다

    exec sp_columns [tablename]
    
  3. ==============================

    3.이 같은?

    이 같은?

    sp_columns @table_name=your table name
    
  4. ==============================

    4.한 가지 방법은 쿼리 SYSCOLUMNS하는 것입니다 :

    한 가지 방법은 쿼리 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
    
  5. ==============================

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

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

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

    나는 일반적으로 내가 아는 열이 새 버전의 일부가 존재 있는지 확인하기 위해 비슷한 쿼리를 사용합니다. 이 where 절에의 추가 {AND 이름 = 'YOUR_COLUMN'}와 같은 쿼리입니다.

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

    6.이 시도

    이 시도

    select * from <tablename> where 1=2
    

    ...............................................

  7. ==============================

    7.다음은 위의 첫 번째 추천 검색어처럼 보이지만 언젠가 당신은 일에 얻을 수있는 데이터베이스를 지정해야합니다. 쿼리는 또한 TABLE_SCHEMA를 지정하지 않고 작업을해야합니다 :

    다음은 위의 첫 번째 추천 검색어처럼 보이지만 언젠가 당신은 일에 얻을 수있는 데이터베이스를 지정해야합니다. 쿼리는 또한 TABLE_SCHEMA를 지정하지 않고 작업을해야합니다 :

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

    8.나는 사용한다

    나는 사용한다

    SELECT st.NAME, sc.NAME, sc.system_type_id
    FROM sys.tables st
    INNER JOIN sys.columns sc ON st.object_id = sc.object_id
    WHERE st.name LIKE '%Tablename%'
    
  9. ==============================

    9.왜 그냥 시도하지 :

    왜 그냥 시도하지 :

    컬럼의 전체 목록은 스크립트에 나와있다. 그것을 복사하고 필요에 따라 필드를 사용합니다.

  10. ==============================

    10.USE [데이터베이스] SELECT TABLE_NAME, TABLE_SCHEMA [COLUMN_NAME], [DATA_TYPE] INFORMATION_SCHEMA.COLUMNS FROM WHERE TABLE_SCHEMA = 'DBO'

    USE [데이터베이스] SELECT TABLE_NAME, TABLE_SCHEMA [COLUMN_NAME], [DATA_TYPE] INFORMATION_SCHEMA.COLUMNS FROM WHERE TABLE_SCHEMA = 'DBO'

  11. ==============================

    11.

    CREATE PROCEDURE [dbo].[Usp_GetColumnName]      
            @TableName varchar(50)
    AS
    BEGIN   
        BEGIN
            SET NOCOUNT ON
            IF (@TableName IS NOT NULL) 
                select ORDINAL_POSITION OrderPosition,COLUMN_NAME ColumnName from information_schema.columns 
                 where table_name =@TableName
                 order by ORDINAL_POSITION
        END
    END
    
  12. ==============================

    12.나는 syscolumns.colid 값이 sp_columns의 일부로 반환 된 'ORDINAL_POSITION'값과 동일 확실하지 경우 해요,하지만 다음 무엇을 내가 그것을 그런 식으로 사용하고 - 나는 misinforming 아니에요 희망을 ...

    나는 syscolumns.colid 값이 sp_columns의 일부로 반환 된 'ORDINAL_POSITION'값과 동일 확실하지 경우 해요,하지만 다음 무엇을 내가 그것을 그런 식으로 사용하고 - 나는 misinforming 아니에요 희망을 ...

    여기 내가 찾은 다른 답변의 일부에 약간의 변화가있어 -이 테이블의 컬럼의 '위치'또는 주문 때문에 내 응용 프로그램에서 중요하다 사용 - 나는 기본적으로 열 (n)은 무엇이라고 '알 필요가 ? '

    sp_columns는 관계없는 물건의 전체 무리를 반환하고, 나는이 길을 갔다 그래서는 T-SQL의 기능을보다 선택과보다 간편한 해요 :

    select    
      syscolumns.name, 
      syscolumns.colid    
    from     
      sysobjects, syscolumns  
    where 
      sysobjects.id = syscolumns.id and   
      sysobjects.xtype = 'u' and   
      sysobjects.name = '<YOUR_TABLE>' 
    order by syscolumns.colid 
    
  13. ==============================

    13.@Gulzar 나짐의 대답이 큰 반면, 다음의 SQL에 의해 달성 될 수있는 쿼리의 데이터베이스 이름을 포함하는 것이 더 쉬울 것입니다.

    @Gulzar 나짐의 대답이 큰 반면, 다음의 SQL에 의해 달성 될 수있는 쿼리의 데이터베이스 이름을 포함하는 것이 더 쉬울 것입니다.

    SELECT COLUMN_NAME, *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'you-table-name' AND TABLE_CATALOG='your-database-name'
    
  14. ==============================

    14.당신은 모든 열 이름을 인쇄하려면 다음 코드를 사용할 수 있습니다; 또한 중 형식 U이 좋아하는 다른 세부 사항을 인쇄 할 코드를 수정할 수 있습니다

    당신은 모든 열 이름을 인쇄하려면 다음 코드를 사용할 수 있습니다; 또한 중 형식 U이 좋아하는 다른 세부 사항을 인쇄 할 코드를 수정할 수 있습니다

        declare @Result varchar(max)='
                '
                select @Result=@Result+''+ColumnName+'
                '
                from
                (
                    select
                        replace(col.name, ' ', '_') ColumnName,
                        column_id ColumnId
                    from sys.columns col
                        join sys.types typ on
                            col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
                    where object_id = object_id('tblPracticeTestSections')
                ) t
                order by ColumnId
                print @Result
    

    산출

    column1
    column2
    column3
    column4
    

    테이블 및 코드 아래의 C # 클래스 사용 등의 열 이름을 인쇄하는 동일한 코드를 사용하려면 :

        declare @TableName sysname = '<EnterTableName>'
        declare @Result varchar(max) = 'public class ' + @TableName + '
        {'
    
        select @Result = @Result + '
            public static string ' + ColumnName + ' { get { return "'+ColumnName+'"; } }
        '
        from
        (
            select
                replace(col.name, ' ', '_') ColumnName,
                column_id ColumnId
            from sys.columns col
                join sys.types typ on
                    col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
            where object_id = object_id(@TableName)
        ) t
        order by ColumnId
    
        set @Result = @Result  + '
        }'
    
        print @Result
    

    산출:

     public class tblPracticeTestSections
     {
       public static string column1 { get { return "column1"; } }
    
       public static string column2{ get { return "column2"; } }
    
       public static string column3{ get { return "column3"; } }
    
       public static string column4{ get { return "column4"; } }
    
     } 
    
  15. ==============================

    15.난 그냥 마틴 스미스 같은 쿼리, 그냥 조금 짧은 언급 사용

    난 그냥 마틴 스미스 같은 쿼리, 그냥 조금 짧은 언급 사용

    SELECT COLUMN_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'YourTableName'
    
  16. ==============================

    16.

    SELECT *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = N'TableName'
    
  17. ==============================

    17.SYSCOLUMNS이되지 않기 때문에, Sys.All_Columns을 사용합니다 :

    SYSCOLUMNS이되지 않기 때문에, Sys.All_Columns을 사용합니다 :

    Select  
     ObjectName       = Object_Name(Object_ID)  
    ,T.Name  
    ,C.*  
    ,T.*  
    From   
               Sys.All_Columns C  
    Inner Join Sys.Types       T  On T.User_Type_Id = C.User_Type_Id  
    Where [Object_ID] = Object_ID('Sys.Server_Permissions')  
    --Order By Name Asc  
    

    = 유형의 ID를 user_type_id 얻을 것 Sys.Types SELECT * FROM. 이것은 데이터베이스 내에서 고유합니다. 시스템 데이터 유형의 경우 : user_type_id = system_type_id.

  18. ==============================

    18.

    DECLARE @col NVARCHAR(MAX);
    SELECT @col= COALESCE(@col, '') + ',' + COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS WHERE  Table_name = 'MxLocations';
    SELECT @col;
    
  19. ==============================

    19.

    set fmtonly on
    select * from yourTable
    
  20. from https://stackoverflow.com/questions/600446/how-do-you-return-the-column-names-of-a-table by cc-by-sa and MIT license