如何应对Oracle数据库 表中的字段为空值情况

标签:
nul和nulloracleoracle报表显示不完整 |
分类: 技术类 |
今天开发Oracle EBS中一张报表时 ,遇到了个问题,报表后面的数据不能正常显示
从不能显示的字段位置查起,发现了一个问题,就是Oracle数据库 表中的字段看着为空值,实际有数据。
如何应对Oracle数据库 表中的字段为空值情况
下面的SQL ,截图,以及验证方法 帮助我们判断 这类情况
SELECT lengthb(x.prime_k_number) 字段数据长度
, ascii(x.prime_k_number) 字段数据对应的ASCII
, NVL(x.prime_k_number,'XX') 字段为空则xx
FROM cux_lyh_test20171109 x;

1通过上面SQL 以及查询结果看 prime_k_number 给我们的第一感觉是空值,
2.通过NVL(x.prime_k_number,'XX') 转换后却不能输出 XX 因此说明 prime_k_number 字段 实际不为空 是有数据的,
3通过lengthb((x.prime_k_number) 结果 来验证我们第2项的判断是正确的,果然数据为1 说明 x.prime_k_number 不为空值,
4.不为空值,为什么我们看不到?因为是对于SQL来说 一种特殊的字符,通过Ascii码来查看
发现结果为 0
5.通过 Ascii码对照关系 发现
编号为0的就是我们平时说的什么也没有,专业一点就是空,用符号NUL或null表示。
针对上述的问题 ,就能定位到问题,从而有针对性解决。
-- 刘轶鹤
从不能显示的字段位置查起,发现了一个问题,就是Oracle数据库 表中的字段看着为空值,实际有数据。
如何应对Oracle数据库 表中的字段为空值情况
下面的SQL ,截图,以及验证方法 帮助我们判断 这类情况
SELECT lengthb(x.prime_k_number)

1通过上面SQL 以及查询结果看 prime_k_number 给我们的第一感觉是空值,
2.通过NVL(x.prime_k_number,'XX') 转换后却不能输出 XX 因此说明 prime_k_number 字段 实际不为空 是有数据的,
3通过lengthb((x.prime_k_number) 结果 来验证我们第2项的判断是正确的,果然数据为1 说明 x.prime_k_number 不为空值,
4.不为空值,为什么我们看不到?因为是对于SQL来说 一种特殊的字符,通过Ascii码来查看
发现结果为 0
5.通过 Ascii码对照关系 发现
针对上述的问题 ,就能定位到问题,从而有针对性解决。
-- 刘轶鹤