decimal(8,3)
问一下:
它的长度为8位,精度为3位,长度8位包不包括小数点呢
也就是  小数点 算不算一位。还有就是类型转换问题 在表A中原来有一列num1 ,原先存储的是 一个 8.3型的数值,现在要求转换位 6.3型的数值请问如何截取 也就是decimal 类型的数值 如何截取 像 字符类型那样(substr(s,1,5)),要实现那样的功能

解决方案 »

  1.   

    还有就是类型转换问题 在表A中原来有一列num1 ,原先存储的是 一个 8.3型的数值,现在要求转换位 6.3型的数值 请问如何截取 也就是decimal 类型的数值 如何截取 像 字符类型那样(substr(s,1,5)),要实现那样的功能 
    ------------这个同类型,不需要转换.
      

  2.   

    decimal(8,3)是说整体长度8位,小数点3位,那么整数就最多5位了。第二问 用round(num1 , -2)或者TRUNC(num1 , -2) 。但是如果你要将12345.123改成123.123 那个我感觉你只能先转成字符串格式,弄好后再转成数字格式了。
      

  3.   

    在 oracle 的 Number 类型的定义中,如number(8,3),代表小数位数是三位,整数部分是 8-3=5 位,小数点不占位数。第二个问题:
    如果在缩小number的长度,如果所有的记录的长度是小于你要缩小的长度时,你可以直接缩小,但是不能直接更改表结构,
    先需要将数据导出,缩小后,再导入数据。  如果是大于你将要缩小的精度时,你就要考虑一下,因为这样,会造成数据的丢失。
      

  4.   

    http://topic.csdn.net/u/20070806/10/ab04d037-0ebb-4c25-8e2b-d216fb15682b.html
    看下这位达人的解释