2

如何在 MS-SQL 中知道表中的列位置。
例如:如果一个表由 3 列组成,即 column1、column2 和 column3。
我应该写一个查询,以便我可以得到 column3 的位置为3

4

4 回答 4

1

您将从 information_schema 中获得所有这些信息。

select ordinal_position from information_schema.columns 
where schema_name = 'databasename'
and table_name = 'tablename'
and column_name = 'column name' 
于 2013-09-23T07:32:59.117 回答
1

有两种方法可以做到这一点:

select colid
from sys.syscolumns
where id = object_id('schemaname.tablename') and name = 'column3'

select ordinal_position
from information_schema.columns 
where
    schema_name = 'schemaname' and
    table_name = 'tablename' and
    column_name = 'column3' 

这是一篇关于为什么要避免使用 information_schema 视图的文章 -针对 INFORMATION_SCHEMA 视图的案例,我不必经常写这种类型的查询,所以我不太关心它,但 sys.syscolumns 往往有点更快,因为它没有很多您可能不需要的冗余连接。

OTOH,information_schema 视图是 ISO 标准 - 这是关于此的讨论 - SQL Server:我应该在 sys 表上使用 information_schema 表吗?

于 2013-09-23T07:36:04.597 回答
0

尝试查询并检查结果。

从 information_schema.columns 中选择 column_name,ordinal_position 其中 table_catalog = 'yourdatabasename' and table_schema = 'yourschemaname' and table_name = 'yourtablename'

于 2013-09-23T07:43:41.150 回答
0

尝试 :

SELECT ORDINAL_POSITION
FROM information_schema.columns
WHERE table_name = 'YourTableName' AND COLUMN_NAME = 'YourColumnName'
于 2013-09-23T07:39:22.207 回答