2

SQL Server 2012 的 select * 返回列的顺序是否发生了变化?

例如,对于具有列 a1、a2、a3 的表 t,select * from t对于 2012 年之前的 SQL Server 版本,该列以 a1、a2、a3 的顺序返回列,并且在迁移到 2012 之后,该顺序更改为其他顺序,例如,a3,a1,a2。

有没有其他人注意到这一点?

为什么会发生这种变化?

我个人很好奇为什么会发生这种情况。转换到 SS 2012 可能有问题?

(不,我的应用程序不依赖于列排序,我知道我应该按照我想要的顺序指定我需要的列,而不是使用select *

4

1 回答 1

3

它取决于表中每一列的ordinal_positioninformation_schema.columns

该表中的每一列都有一个条目,其中包含表名和序号位置。尝试这个:

SELECT column_name, ordinal_position
FROM information_schema.columns 
WHERE table_name = 'table name';

这应该返回与前一个实例相同的值。

于 2013-01-09T15:31:52.467 回答