SQL报错,无效数字

问题原因:表中的字段dept类型是varchar,但是传入的数据类型是number
解决方案两种:
①把dept字段的数据转换成number类型
builder.append("\n and to_number(s.dept) in(").append(department).append(")");
②使用presql,调用工具类的querySqlConditionByMap()方法,不过需要注意:
比如,有开始日期stdate 和 结束日期eddate还有 部门casein_department 时,得先把stdate和eddate从map取出来,然后再remove掉,只对casein_department进行单独处理。举例如下

//先把不需要处理的值取出来
String startDate = map.get("stdate")!=null?map.get("stdate").toString():"";
String endDate = map.get("eddate")!=null?map.get("eddate").toString():"";
String startDatetq = map.get("stdatetq")!=null?map.get("stdatetq").toString():"";
String endDatetq = map.get("eddatetq")!=null?map.get("eddatetq").toString():"";
//取完值之后从map中移除,方便只对casein_department进行处理
map.remove("stdate");
map.remove("eddate");
map.remove("stdatetq");
map.remove("eddatetq");
List<Object> list = sUtil.querySqlConditionByMap(map);
//返回的list里面有两组数据,第一组是一串?,?,?……,第二组是注入的值,在下面分别获取
String preSql = list.get(0).toString();//获取一串问号
List<Map<String, Object>> paraList = (List<Map<String, Object>>) list.get(1);//获取注入的值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容