首页 > 解决方案 > 为什么我的 SQL 查询返回的记录与 where 子句不匹配?

问题描述

此查询返回一个记录的结果,其中[E-mail][E-mail 2]都等于'e'。绝对是一个懒惰的推销员的结果。知道为什么会这样吗?

我的查询如下所示,所以我应该只获取电子邮件等于'emailfromsomeone@hotmail.com'正确的记录?

declare @email as varchar
set @email = 'emailfromsomeone@hotmail.com'

select
    C.[No_],
    C.[First Name] firstname, 
    C.[Surname] lastname, 
    C.[E-Mail] as email, 
    C.[E-Mail 2] as email_2, 
    C.[GDPR Opt-in] as GDPR_opt_in,
    C.[Salesperson Code] as sales_person    
from 
    [Contact] as C
where  
    lower(C.[E-Mail]) = lower(@email)
    or lower(C.[E-Mail 2]) = lower(@email)

标签: sql

解决方案


您已声明@email为 a VARCHAR,表示单个 VARCHAR。当您设置@email变量时,它会被截断为第一个字符。

尝试更改VARCHARVARCHAR(100).


推荐阅读