Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 列为空,但不限定where子句_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 列为空,但不限定where子句

Sql 列为空,但不限定where子句,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,运行此查询时: select LR.ID, LR.HIDE from Location_Room LR where LR.LID = 19624 我得到: 当我运行第二个查询时: 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)

运行此查询时:

 select LR.ID, LR.HIDE 
 from Location_Room LR 
 where LR.LID = 19624
我得到:

当我运行第二个查询时:

 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) 
我得到这个结果:

我需要检查HIDE是否为null或空白,但似乎不能这样做

列的设置如下所示:


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

看起来数据中有一个有趣的字符。您可以使用ASCII查看隐藏中第一个字符的ASCII值:

或许:

select ascii(left(ltrim(rtrim(hide)), 1))
from Location_Room;

尝试检查查询结果:选择distinct LR.HIDE from Location_Room LR,其中LR.LID=19624看起来列不是空的,请尝试选择HIDE的十六进制值以查看是否有任何不可打印的字符。值得注意的是,如果您开始交替使用NULL和“”,您会自找麻烦。使用空白字符是有理由的,但您的设计应始终使用其中一个字符,至少在不同的列中使用。@jannagy02-这将返回与第1列相同的空白值screenshot@Jens-我运行了这个SELECT CONVERTVARCHARMAX、CONVERTVARBINARYMAX、LR.HIDE、,1从LR.LID=19624的位置拉出十六进制值,我得到0x00这两个返回值0@iKode . . . \000确实是一个时髦的角色。你可以用替换隐藏,char0来摆脱它。
select ascii(left(ltrim(rtrim(hide)), 1))
from Location_Room;