列为空,但不符合where子句

iKo*_*ode 2 sql sql-server sql-server-2008

当我运行此查询时:

 select LR.ID, LR.HIDE 
 from Location_Room LR 
 where LR.LID = 19624
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此输入图像描述

当我运行第二个查询时:

 select LR.HIDE, ID 
 from Location_Room LR 
 where LR.LID = 19624 
   AND (LR.HIDE = ' ' OR LR.HIDE IS NULL or LR.HIDE = '' or datalength(LR.HIDE) = 0) 
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

在此输入图像描述

我需要检查HIDE是不是空或空白,但似乎无法这样做.

该列设置如下:

在此输入图像描述

为什么会这样?我该如何解决?

Gor*_*off 5

看起来你在数据中有一个有趣的角色.你可以看到的第一个字符的ASCII值hide的使用ASCII():

select ascii(left(hide, 1))
from Location_Room;
Run Code Online (Sandbox Code Playgroud)

也许:

select ascii(left(ltrim(rtrim(hide)), 1))
from Location_Room;
Run Code Online (Sandbox Code Playgroud)