对于 SQL Server 2012,select * 的返回列的顺序是否发生变化?
例如,对于包含 a1、a2、a3 列的表 t,对于 2012 年之前的 SQL Server 版本,select * from t
按 a1、a2、a3 的顺序返回列,迁移到 2012 年之后,顺序更改为其他顺序,例如 a3,a1,a2。
还有人注意到这一点吗?
为什么会发生这种变化?
我个人很好奇为什么会发生这种情况。转换为 SS 2012 可能存在一些问题?
(不,我的应用程序不依赖于列顺序,我知道我应该按照我想要的顺序指定所需的列,而不是使用 select *
)
最佳答案
这取决于 information_schema.columns
表中每列的 ordinal_position
值。
每列在此表中都有一个条目,其中包含表名称和序号位置。试试这个:
SELECT column_name, ordinal_position
FROM information_schema.columns
WHERE table_name = 'table name';
这应该返回与前一个实例相同的结果。
关于sql-server - SQL Server 2012 的 select * 返回列的顺序是否发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238672/