求三个不同字段(A,B,C) 同一行的最小值least(A,B,C)可以但是我有种情况   ABC 三个字段可能有一个为空  比如
A        B     C
NULL     2     1这样的情况下查询出来就是  null 这个字段了这样的情况我希望得到1就是  判断如果 字段值是null  则排除    (不可能三个字段都为空的)
在线等,求助,谢谢!!!

解决方案 »

  1.   

    取的是最小值啊,
    问最大值做什么?
    类型都是varchar2
      

  2.   

    select least(nvl(a,'最大值'),nvl(b,'最大值'),nvl(c,'最大值'))
    from dual;
    --'最大值':是你3个列中各个列的数据永远不会达到的值。
      

  3.   

    你虽然定义的是varchar2,但你存放到3列的varchar2值,至少应该能够转换成number吧?不然的话有法比较??
      

  4.   

    没有值就给个最大值,反正你要取的是最小值,如:select least(nvl(a,'10000000'),nvl(b,'10000000'),nvl(c,'10000000')) from your_table;
      

  5.   

    对不起  我说的有错 !
    需要转换下的,不然如果都不为空,而且全是varchar2类型的可以比较,但是有为空的 
    用“(★头脑风暴★) ”的方法会出现   查询出来为“'10000000'”这样的情况但是select least(to_number(nvl(a,'10000000')),to_number(nvl(b,'10000000')),to_number(nvl(c,'10000000'))) from your_table;
    就可以了
    感谢二位!!!
      

  6.   

    你还不如直接这样。
    select least(nvl(a,10000000),nvl(b,10000000),nvl(c,10000000)) from your_table;
    那是因为你给10000000加了单引号,nvl把他当字符型进行处理了。