ORACLE 数据库中的NUMBER类型的字段为NULL时怎么处理?

public List<Map<String, Object>> findZxm(String lxsbh) {
StringBuffer sql = new StringBuffer();
sql.append("select N_XMXZ, N_LXSBH from t_zxxm_lxs where N_LXSBH =");
sql.append("(select N_MAINXMBH From t_zxxm_lxs WHere N_LXSBH =");
sql.append(lxsbh);
sql.append(")");
List<Map<String, Object>> list = this.getJdbcTemplate().queryForList(
sql.toString());
return list;

}

当调用改方法时:findZxm(lxsbh).get(0).get("N_XMXZ").equals(BigDecimal.valueOf(Long.valueOf(5)))
如果N_XMXZ为null值时会报空指针异常,这块改怎么处理?

1、创建一张数据库测试表,用于演示null空值的查询。

2、往测试表中插入测试记录,包含一个NULL、空字符串、非空字符串值。

3、查询测试表中的所有数据,select * from tblNullData。

4、在oracle数据库中,null与任何字段相比都会返回false,为此,oracle提供了一个is null词组判断null。从运行结果可以看出,空字符串不是null select * from tblNullData where ColName is null。

5、在oracle数据库中,想要查询非null的值,就需要使用is not null词组判断了。从运行结果可以看出,空字符串的记录行查询出来了select * from tblNullData where ColName is not null。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
定义一个为null的情况接收的值,或者说数据库不可能存的值如 -1
sql.append("select N_XMXZ, N_LXSBH from t_zxxm_lxs where N_LXSBH =");

改为:
sql.append("select nvl(N_XMXZ,-1) N_XMXZ, N_LXSBH from t_zxxm_lxs where N_LXSBH =");

前台取出如何是-1的说明数据库里面为空,自己根据业务处理吧本回答被提问者和网友采纳
第2个回答  2013-01-30
select nvl(N_XMXZ,0), N_LXSBH from ** 自己在网上找找nvl的用法
第3个回答  2013-01-30
nvl(N_XMXZ,0)
相似回答