테이블에서 열 순서를 식별하는 방법


9

테이블 정의 순서로 테이블의 열을 나열해야합니다.

select * from syscolumns
where id = object_id('MyTable')
--order by colid

검사하여 syscolumns테이블에 두 개의 열 관련보고 : colidcolorder. syscolumns에 대한 MSDN 기사 는 다음과 같이 말합니다.

colid    | smallint | Column or parameter ID.
colorder | smallint | Identified for informational purposes only. 
                    | Not supported. Future compatibility is not guaranteed.

나는 달리려고 노력했다

select * from syscolumns where colorder <> colid

행이 생성되지 않아서이 열의 값이 대부분 같은 값이라고 생각합니다.

가장 안전한 방법은 colid를 사용하는 것입니다. 그러나 나는 알고 싶습니다.이 두 열 사이에 차이점이 있습니까?있는 경우이 차이점은 무엇입니까?

또한 MSDN 기사는 colid가 테이블 정의의 순서를 반영한다는 것을 확인하지 않습니다. 이것이 사실이라고 가정하는 것이 합리적이지만, 사실 인지 확실 하다면 어떻게 알 수 있습니까?

답변:


11

sys.columns카탈로그 뷰를 사용해야합니다 . syscolumns이전 버전과의 호환성을 위해서만 포함됩니다. 실제로 SQL Server 2008 R2에서 사용해서는 안되는 SQL Server 2000 시스템 테이블입니다.

select *
from sys.columns
where object_id = object_id('MyTable')
order by column_id

열의 순서를 반환해야합니다. 그러나이 열 ID는 순차적이지 않을 수 있습니다.


7

INFORMATION_SCHEMA보기도 제공하고 싶습니다. 이들은 ANSI 표준이며 데이터베이스를 지원하는 데이터베이스에 대해 크로스 데이터베이스로 작동합니다.

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'MyTable'
ORDER BY ORDINAL_POSITION

3

columnID를 순서대로 원하거나 필요로하는 경우 다음을 사용했습니다.

select 
    ROW_NUMBER() OVER (PARTITION BY OBJECT_NAME(object_id) ORDER BY Column_ID) as ColumnIDSeq,
    *
from sys.columns
where OBJECT_NAME(object_id) = 'MyTable'
order by column_id
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.