从数据类型 varchar 转换为 numeric 时出错。

image.png

image.png

查询采购金额范围的时候,最小值不填,最大值输入条件的时候能正确查询出数据;然而最小值输入条件,最大值填写后,就会报类型转换的错误,这个是什么原因导致的?

image.png

image.png

我的需求是第一次加载页面的时候所有查询条件默认传null,然后自动查询出所有结果;之后用户输入采购金额范围时,若左边填入A,右边不填,则查询出采购金额大于A的所有结果;但是后者的情况会报错,这种情况数据集判断应该如何实现?

FineReport 415485862 发布于 2019-11-14 16:05 (编辑于 2019-11-19 15:38)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
nanxi111Lv5见习互助
发布于2019-11-14 16:28(编辑于 2019-11-19 18:31)

最小值的那个if判断有问题,当minPrice<>0,执行的判断条件是excluding_tax_amount>=maxPrice,这时候maxPrice是''字符串,空白字符串转换为数值就会报错


图片.png

图片.png

图片.png

  • 415485862 415485862(提问者) minPrice不等于0时没有报错啊
    2019-11-14 16:43 
  • nanxi111 nanxi111 回复 415485862(提问者) ${if(len(minprice)=0,\"\",\"and tax_amount >=\'\"+minprice+\"\'\")} ${if(len(maxprice)=0,\"\",\"and tax_amount <=\'\"+maxprice+\"\'\")}
    2019-11-19 15:51 
  • 415485862 415485862(提问者) 回复 nanxi111 我最开始也是这种写法,但是如果minPrice大于maxPrice就查不到结果了,我的需求左边是可以大于右边的。
    2019-11-19 16:03 
  • nanxi111 nanxi111 回复 415485862(提问者) 你这个报错就是因为你设置了左边大于右边时候tax>右边,帆软里数字和空白比较没问题,但是数据库比较numeric类型和空白字符串时候会把空白字符串转换成numeric,所以会报错,你看下我修改的答案。所以要么修改逻辑,要么设置if为空等于0
    2019-11-19 18:30 
最佳回答
0
萌萌的呆贼Lv4初级互助
发布于2019-11-14 16:30

把执行的sql  在日志中提取出来 去数据库客户端执行看看

  • 3关注人数
  • 1090浏览人数
  • 最后回答于:2019-11-19 18:31
    请选择关闭问题的原因
    确定 取消
    返回顶部