我创建了一个表,并希望找到其列的显示顺序。我应该使用以下查询来显示由 订购的信息column_id
吗?
select * from sys.columns c
where c.object_id = object_id('Customer')
order by column_id
create table dbo.Customer
(
CustomerId int primary key,
CustomerName varchar(255),
CustomerAddress varchar(255),
EnrollmentDate date
)
Run Code Online (Sandbox Code Playgroud)
阅读Microsoft SQL Server 文档,我看到下面的信息,所以想确定:
列名 数据类型 描述 ----------- --------- ------------------------------ ---------------- column_id:列的整数 ID。在对象内是唯一的。 列 ID 可能不是连续的。
column_id
是列序号的合理代理,因为在 SQL Server 中的两个现有列之间插入列是不可能的,而不删除和重新创建表。
正如文档所述,column_id
如果您从表中删除一列,值可能不是顺序的。
您还可以使用COLUMNPROPERTY()函数返回每列的实际序数。
考虑一个简单的例子:
IF OBJECT_ID(N'dbo.t', N'U') IS NOT NULL
DROP TABLE dbo.t;
CREATE TABLE dbo.t
(
c1 int
, c2 int
, c3 int
, c4 int
);
ALTER TABLE dbo.t DROP COLUMN c1;
ALTER TABLE dbo.t ADD c5 int;
ALTER TABLE dbo.t ALTER COLUMN c2 char(3);
SELECT o.name
, c.name
, c.column_id
, ordinal = COLUMNPROPERTY(c.object_id, c.name, 'ordinal')
FROM sys.columns c
INNER JOIN sys.objects o ON c.object_id = o.object_id
WHERE o.name = N't'
Run Code Online (Sandbox Code Playgroud)
输出看起来像:
?????????????????????????????????????????? ? 姓名 ?姓名 ?列 ID ? 序数? ?????????????????????????????????????????? ? ? c2 ? 2 ? 1 ? ? ? c3 ? 3 ? 2 ? ? ? c4 ? 4 ? 3 ? ? ? c5 ? 5 ? 4 ? ??????????????????????????????????????????
归档时间: |
|
查看次数: |
649 次 |
最近记录: |