select a.cqualitylevelid from scm_batchcode a
where nvl(a.cqualitylevelid,'a') = 'a' 能查出为NULL数据
而
select a.cqualitylevelid from scm_batchcode a
where nvl(a.cqualitylevelid,'') = ''
查不出为NULL的数据?
where nvl(a.cqualitylevelid,'a') = 'a' 能查出为NULL数据
而
select a.cqualitylevelid from scm_batchcode a
where nvl(a.cqualitylevelid,'') = ''
查不出为NULL的数据?
where nvl(a.cqualitylevelid,'') = ''
查不出为NULL的数据? 改成:
select a.cqualitylevelid from scm_batchcode a
where nvl(a.cqualitylevelid,'') is null
select a.cqualitylevelid from scm_batchcode a
where a.cqualitylevelid is null
select a.cqualitylevelid from scm_batchcode a
where nvl(a.cqualitylevelid,'a') = (?)
? 这个地方其实是一个字符串变量,有些时候是空串,有些时候是有值的.
所以不能用 is null.这其实是一个查询语句.就是查 a.cqualitylevelid等于我传给他的这个变量.我是用java.
where nvl(a.cqualitylevelid,' ') = ' '
where nvl(a.cqualitylevelid,'NULL') = nvl(?,'NULL')
老兄说的很对,我现在就是这么干的,的确可行.
select a.cqualitylevelid from scm_batchcode a
where nvl(a.cqualitylevelid,'a') = nvl(?,'a')
现在我对oracle中空串和NULL的区分还不是很明了
再就是用nvl处理一下用是否相等去判断了。