小编Phi*_*ord的帖子

看似相同的 WHERE 子句返回不同的结果

我有一个名为 的表[User]。下面是一个从表中查找一个用户的简单查询:

\n
SELECT  [Username]\n      ,[FirstName]\n      ,[LastName]\n      ,[EmailAddress]\n      ,[IsStaff]\n      ,[ExternalID]\n      ,[LastLogin]\nFROM [dbo].[User]\nWHERE [Username] = 'pskalhaq' -- 1\n--WHERE [Username] = '\xe2\x80\x8fpskalhaq' -- 2\n
Run Code Online (Sandbox Code Playgroud)\n

当我运行此查询时,我得到一条记录,这正是我所期望的。当我注释掉WHERE标记为“1”的子句并取消注释标记为“2”的子句时,我没有得到任何结果。这很奇怪,因为引号之间的值是相同的。

\n

我发现这个问题是因为我编写的一个 Web 应用程序使用实体框架从另一个表获取记录,[Appointment]由于表中没有相关记录而抛出错误[User],即使该[Appointment]表包含不可为空的记录外键连接到[User]表。这似乎是不可能的。我在 SSMS 中运行了等效查询(2892 是给我带来麻烦的约会记录的 ID):

\n
SELECT a.[ID] AS [AppointmentID]\n    ,a.[StudentUsername] -- This is the foreign key in the Appointment table\n    ,u.[Username] -- This is the primary key in the User table\nFROM [dbo].[Appointment] a\nJOIN [dbo].[User] u \nON u.[Username] = a.[StudentUsername]\nWHERE a.[ID] …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2016

12
推荐指数
1
解决办法
2175
查看次数

标签 统计

sql-server ×1

sql-server-2016 ×1

t-sql ×1