ORACLE:为何经过计算或判断的数值全部变为字符串类型?

如题讨教:如SELECT Customter, SUM(Qty) SumQty FROM SALES GROUP BY Customer,Qty在原表是数值型,但汇总后的结果SumQty却是字符型,如果汇总后是0.5,则数据库返回字符串".5"(前面没有0),无法运算,必须用TO_CHAR做格式转换,但转换后即使再用TO_NUMBER转换为数字,还是不能运算,也不报错。如果用case when做过判断也会自动变为字符,这是为撒呀?是哪里要加个设置吗?晕死了

round(SUM(Qty),1) SumQty
试试呢

建议你把你的完整使用场景说明一下,你可能对这个东西有所误解

  1. 如果你所有的代码都是在数据库里,那么你的SumQty 就是数字型,它并没有变成字符型,它可以在数据库里进行各种加减乘除计算;
  2. 但是你如果是直接导出数据为文本,那么实际上就是导出的原始数据,对于oracle而言,0.5这个数值在数据库中的存储就是 .5 ,可以理解为这是为了节省存储空间(这点其实其他数据库也有类似的做法),而且前面有没有0实际上并不影响计算

img

  1. 如果你是使用其他开发语言接收查询数据,那么请使用其对应的数据类型进行接收