Sql server sql server联接查询不包括同名列的表名

Sql server sql server联接查询不包括同名列的表名,sql-server,join,columnname,tablename,Sql Server,Join,Columnname,Tablename,我正在将一个jet数据库迁移到ms sql,该应用程序已建立良好,包含数万行代码,可能超过10万行代码 使用adodb记录集(在vb.net中)查询jet数据库并连接具有同名列的表(选择a.foo、b.foo)时,将为具有相同名称的字段返回TableName.Column。 但是,当查询sql server(MS sql)时,只会得到列名,因此如果有两个表a和b,并且每个表都有一个名为foo的列,则会得到两个都名为“foo”的列,其中与jet数据库一样,会得到a.foo和b.foo 我完全知道您

我正在将一个jet数据库迁移到ms sql,该应用程序已建立良好,包含数万行代码,可能超过10万行代码

使用adodb记录集(在vb.net中)查询jet数据库并连接具有同名列的表(选择a.foo、b.foo)时,将为具有相同名称的字段返回TableName.Column。
但是,当查询sql server(MS sql)时,只会得到列名,因此如果有两个表a和b,并且每个表都有一个名为foo的列,则会得到两个都名为“foo”的列,其中与jet数据库一样,会得到a.foo和b.foo

完全知道您可以在select语句中使用“as”将列名别名为(选择a.foo作为a_foo,选择b.foo作为b_foo),但是 我不想那样做-我没有时间浏览应用程序中的大约一千条select语句

所以我想问的是,是否有人知道SQL可以像jet数据库一样运行,并为具有类似名称的字段返回
TableName.ColumnName

或者,如果有人确实知道mssql只能返回ColumnName而不返回TableName,那么哪个数据库引擎可以像Jet数据库那样呢


顺便说一句,Jet数据库只有在使用直接连接字符串语法时才会这样做,否则,如果通过ODBC访问数据,它的行为将与SQL Server相同。

我知道您不想这样做,但在等待回答时,你也可以继续使用你的代码,让它与大多数SQL数据库系统一起工作,而不是希望有办法让SQL Server或其他SQL产品以完全相同(我敢说)的方式运行,就像Jet一样。@Damien_不信者也许我误读了,但是,是否也可以通过JDBC之类的方式获取列名呢?也许有一个API可以为VB.net实现这一点。没有办法让SQL Server以本机方式实现这一点。列名永远只是列名,不包括表名,而行集是行集,即使在元数据中(仅在查询计划中),也不会链接回其基础表。实际上,您最好使用一个聪明的正则表达式系统地遍历“数千个左右”语句,并将
选择[…]a.foo
更改为
a.foo as[a.foo]
,或者实现执行查询之前执行并转换查询的代码。这些疑问需要改变;消费者不会。