OR显示结果,AND不显示

Vco*_*der 0 sql t-sql sql-server

我有以下问题,一个简单的表

:

FNAME  LNAME  AGE
-----------------
John   Carl   22
Rupert Luis   24
Run Code Online (Sandbox Code Playgroud)

如果我执行以下T-SQL查询:

Select * 
from PERSON 
WHERE FNAME = 'John' AND LNAME = 'Carl'
Run Code Online (Sandbox Code Playgroud)

它没有显示任何结果......如果我放置一个OR而不是AND它确实对我来说没有意义,但它可能是正确的,我只是想明白为什么这样做?

Gor*_*off 5

您显示数据的方式,在姓氏的开头有一个空格.我不知道原始数据中是否属实,但在查询中确实如此.

然后字符串'CARL'' CARL'不一样.您可以进行比较:

where ltrim(rtrim(firstname)) = 'John' and ltrim(rtrim(lastname)) = 'Carl'
Run Code Online (Sandbox Code Playgroud)

或者您可以修复数据:

update person
    set lastname = ltrim(rtrim(lastname));
Run Code Online (Sandbox Code Playgroud)

或者,可能存在另一个类似问题,通常由以下原因引起:

  • 字符串中不打印的隐藏字符(通常在开头或结尾).
  • 看起来相似但不同的字符,例如零和大写字母O.