多部分标识符无法与基本查询绑定

Multi-part identifier could not be bound with basic query

我正在为以下非常基本的查询(更复杂的查询的一部分)挠头,我只是因为使用我为 table 定义的别名而收到错误。我是 运行 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 [Ε]

报错

The multi-part identifier "E.AddressNumber" could not be bound.

(显然我在这里不需要别名,但正如我所说,这是具有许多 table 的较大查询的精简版本,只是为了复制错误)

[更新]

由于@Gordon-Linoff 的评论,问题已解决。 事实证明,我从其他地方复制了第二组查询,"E" 字符与 "E" 相同,但具有不同的 ASCII 代码。 我用 python Spyder:

检查了它
ord('Ε')
Out[110]: 917
ord('E')
Out[111]: 69

正如您所写的问题,所有六个语句的作用应该相同。 . .假设 AddressNumber[char_test1].[dbo].[test1_READY].

我的猜测是,当您实际 运行 查询时,您在 FROM 中还有另一个 table。 table 包含 AddressNumber.

另一种(相当遥远的)可能性是您在别名定义或别名引用中的 E 周围有另一个不可见的字符。如果是这样,那么重新输入代码即可解决问题。