복붙노트

[SQL] 데이터베이스 테이블에서 계산 된 열 목록을 가져 오기 (SQL 서버)

SQL

데이터베이스 테이블에서 계산 된 열 목록을 가져 오기 (SQL 서버)

당신의는 SQL Server 데이터베이스 테이블에서 계산 열 목록을 얻는 방법을 알아?

나는 sys.sp_help tablename에이 정보를 반환하지 않습니다,하지만 두 번째 결과 세트에서 발견.

나는이 일을 더 나은 방법이 있는지 확인하려합니다. 단 하나의 결과 집합을 반환 뭔가.

해결법

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

    1.sys.columns 시스템 카탈로그 뷰를 확인합니다 :

    sys.columns 시스템 카탈로그 뷰를 확인합니다 :

    SELECT *
    FROM sys.columns
    WHERE is_computed = 1
    

    이것은이 데이터베이스에 당신에게 모든 계산 열을 제공합니다.

    당신은 단지 하나의 테이블의 사람들을 원하는 경우,이 쿼리를 사용합니다 :

    SELECT *
    FROM sys.columns
    WHERE is_computed = 1
    AND object_id = OBJECT_ID('YourTableName')
    

    SQL Server 2005 및 최대에이 작동합니다.

    업데이트 : 또한 계산 열 정의 (표현)를 포함 심지어 sys.computed_columns 시스템 카탈로그 뷰있다 - 단지 시간이 필요할 수 있습니다 경우가.

    SELECT *
    FROM sys.computed_columns
    WHERE object_id = OBJECT_ID('YourTableName')
    
  2. ==============================

    2.당신은 INFORMATION_SCHEMA 뷰를 사용하려면, 다음 시도

    당신은 INFORMATION_SCHEMA 뷰를 사용하려면, 다음 시도

    SELECT 
    COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME),COLUMN_NAME,'IsComputed') 
        AS IS_COMPUTED,
    *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME='<Insert Your Table Name Here>'
    
  3. ==============================

    3.SQL Server 2000의 구문은 다음과 같습니다

    SQL Server 2000의 구문은 다음과 같습니다

    SELECT * FROM sys.columns
    WHERE is_computed = 1
    

    그리고 약간 더 유용합니다 :

    SELECT 
        sysobjects.name AS TableName, 
        syscolumns.name AS ColumnName
    FROM syscolumns
        INNER JOIN sysobjects
        ON syscolumns.id = sysobjects.id
        AND sysobjects.xtype = 'U' --User Tables
    WHERE syscolumns.iscomputed = 1
    

    샘플 출력 :

    TableName              ColumnName
    =====================  ==========
    BrinksShipmentDetails  Total
    AdjustmentDetails      Total
    SoftCountDropDetails   Total
    CloserDetails          Total
    OpenerDetails          Total
    TransferDetails        Total
    
    (6 row(s) affected)
    
  4. ==============================

    4.당신은 계산 열이있는 테이블이 많은뿐만 아니라 테이블 이름을보고 싶다면 :

    당신은 계산 열이있는 테이블이 많은뿐만 아니라 테이블 이름을보고 싶다면 :

    SELECT sys.objects.name, sys.computed_columns.name
    from sys.computed_columns 
    inner join sys.objects on sys.objects.object_id = sys.computed_columns.object_id
    order by sys.objects.name
    
  5. from https://stackoverflow.com/questions/1484147/get-list-of-computed-columns-in-database-table-sql-server by cc-by-sa and MIT license