我正在摸着以下非常基本的查询(一个更复杂的查询的一部分),我只是因为使用我为表定义的别名而得到错误。我在Microsoft SQL Server Management Studio v17.5中运行查询,我升级到v17.7,但它没有什么区别。
为什么这三个版本的查询工作正常
SELECT Top(3) AddressNumber from [char_test1].[dbo].[test1_READY]
SELECT Top(3) AddressNumber from [char_test1].[dbo].[test1_READY] AS Ε
SELECT Top(3) [AddressNumber] from [char_test1].[dbo].[test1_READY] AS Ε
虽然这三个版本
SELECT Top(3) E.[AddressNumber] from [char_test1].[dbo].[test1_READY] AS Ε
SELECT Top(3) [E].[AddressNumber] from [char_test1].[dbo].[test1_READY] AS Ε
SELECT Top(3) [E].[AddressNumber] from [char_test1].[dbo].[test1_READY] AS [Ε]
给出错误
无法绑定多部分标识符“E.AddressNumber”。
(显然我在这里不需要别名,但正如我所说的那样,这是一个包含许多表的大型查询的精简版本,只是为了复制错误)
[更新]
由于@ Gordon-Linoff的评论,问题解决了。 事实证明我从其他地方复制了第二组查询,“E”字符与“E”相同但具有不同的ASCII码。 我用python Spyder检查了它:
ord('Ε')
Out[110]: 917
ord('E')
Out[111]: 69
答案 0 :(得分:1)
正如您所写的那样,所有六个陈述都应该完全相同。 。 。假设AddressNumber
位于[char_test1].[dbo].[test1_READY]
。
我的猜测是,当您实际运行查询时,FROM
中有另一个表。该表包含AddressNumber
。
另一种(相当遥远的)可能性是您在别名定义或别名引用中有另一个在E
周围不可见的字符。如果是这种情况,那么重新输入代码将解决问题。