我正在连接到现有数据库,并且该数据库具有定义如下的表:
Name Null? Type
--------------- -------- --------------
M_ID NUMBER
USER_ID VARCHAR2(100)
LOCATION VARCHAR2(10)
AGENT VARCHAR2(9)
LNAME VARCHAR2(50)
FNAME VARCHAR2(50)
USER_TYPE VARCHAR2(20)
BUSS_TYPE VARCHAR2(50)
当我进行选择时,我会看到类似的内容
95879713 ab1212 BGG 0010 Smith Tylor null null
95879714 c21322 BAD 0010 Doe Jane null null
现在,如果我在M_ID上执行选择而不执行最大选择,我将获得价值。但是,如果我用MAX对M_ID进行选择,它将返回null。即。
select MAX(M_ID) from Table_X;
M_ID
(null)
例如:
select M_ID from Table_X;
*M_ID*
12000
12001
15690
...
但是如果我看到其中有空值
select M_ID from Table_X order by M_ID desc;
M_ID
(null)
(null)
(null)
...
现在奇怪的是,如果我只是尝试选择所有那些空M_ID,我什么也得不到。
select * from Table_X where M_ID is null or M_ID = '';
no result returned...
这怎么可能?请注意,我看到的最大值是
706307090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
在表中,但不确定是否是原因。有没有办法解决这个问题?
[正如其他人已经提到过一些支票一样。另外,检查您在此处写入的(null)确实是NULL值还是空格?您正在此处查询中查询空白值:select * from Table_X where M_ID is null or M_ID = '';
。这看起来极不可能,并且不可能用IS NULL
子句不返回NULL。试试这个:
select * from Table_X where M_ID is null or M_ID = ' ';