列在表中的位置

时间:2013-09-23 07:25:54

标签: sql sql-server tsql

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

4 个答案:

答案 0 :(得分:1)

您将从information_schema获得所有这些内容。

select ordinal_position from information_schema.columns 
where schema_name = 'databasename'
and table_name = 'tablename'
and column_name = 'column name' 

答案 1 :(得分: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视图的文章 - The case against INFORMATION_SCHEMA views,我不必经常编写这种类型的查询,所以我并不关心它,但sys.syscolumns倾向于有点快,因为它没有很多你可能不需要的冗余连接。

OTOH,information_schema视图是ISO标准 - 这里有关于此的讨论 - SQL Server: should I use information_schema tables over sys tables?

答案 2 :(得分:0)

尝试:

SELECT ORDINAL_POSITION
FROM information_schema.columns
WHERE table_name = 'YourTableName' AND COLUMN_NAME = 'YourColumnName'

答案 3 :(得分:0)

尝试查询并检查结果。

  

选择column_name,ordinal_position       来自information_schema.columns       其中table_catalog ='yourdatabasename'       和table_schema ='yourschemaname'       和table_name ='yourtablename'