+ -
当前位置:首页 → 问答吧 → 在sql里怎么把一个数值型的字段中小数点后的数值取出来?

在sql里怎么把一个数值型的字段中小数点后的数值取出来?

时间:2011-11-01

来源:互联网

比如t2.marks_t的数值是99.67,类型是number(10,2)

用下面的sql会报错,substring只能截varchar的,那number(10,2)的截取怎么写呢?
SQL code
select substring(t2.marks_t,3,2) from table t2

作者: charlesxu   发布时间: 2011-11-01

SQL code
SELECT SUBSTR (TO_CHAR (t2.marks_t),
               DECODE (INSTR (TO_CHAR (t2.marks_t), '.'),
                       0, NULL,
                       INSTR (TO_CHAR (t2.marks_t), '.') + 1
                      ),
               2
              )
  FROM table t2

作者: tx2730   发布时间: 2011-11-01

select marks_t - trunc(marks_t) from t2

作者: dawugui   发布时间: 2011-11-01

引用 2 楼 dawugui 的回复:
select marks_t - trunc(marks_t) from t2

好主意,但是仅限正数,负数就不灵了

作者: tx2730   发布时间: 2011-11-01

SQL code
create table t2(marks_t number(10,2))

insert into t2 values(99.67)

select marks_t - trunc(marks_t) from t2

/*
MARKS_T-TRUNC(MARKS_T)
----------------------
                   .67

1 row selected.
*/

作者: dawugui   发布时间: 2011-11-01

SQL code
create table t2(marks_t number(10,2))

insert into t2 values(99.67)

insert into t2 values(-99.67)

select t2.* , marks_t - trunc(marks_t) from t2

/*

   MARKS_T MARKS_T-TRUNC(MARKS_T)
---------- ----------------------
     99.67                    .67
    -99.67                   -.67

2 rows selected.

*/

作者: dawugui   发布时间: 2011-11-01

select substr(to_char(t.marks_t-trunc(t.marks_t)),2) from tab1 t

作者: programmerxiaocai   发布时间: 2011-11-01

引用 5 楼 dawugui 的回复:
SQL code

create table t2(marks_t number(10,2))

insert into t2 values(99.67)

insert into t2 values(-99.67)

select t2.* , marks_t - trunc(marks_t) from t2

/*

MARKS_T MARKS_T-TRUNC(M……

顶一个

作者: tx2730   发布时间: 2011-11-01