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

标签 sql-server sql-server-2012

对于 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/

相关文章:

sql-server - 正确索引 UNPIVOT SQL 查询

sql - 重命名索引错误参数@objname不明确

sql-server-2012 - 等待数据库引擎恢复句柄失败!! SQL Server 2012 安装

sql-server - 如何从本地计算机连接 Azure Sql Server 2012 数据库

c# - 如何使用 C# 运行 SQL 事务(使用 TSql110Parser)

java - 即使存在约束违规异常,主键也会自动递增 Mysql(5.6.34)

sql-server - T SQL 批量插入跳过带或不带标题的第一行

sql - 如何使用最新备份更新我的本地 SQL Server 数据库?

java - Spring Integration - Microsoft SQL Server 2012 的消息存储配置

sql-server - 无法使用 Jmeter 创建类 'com.microsoft.sqlserver.jdbc.SQLServerDriver' 的 JDBC 驱动程序