例如一个字段值长度是5的话那么就把这给值赋给一个变量
如果长度是3的话就赋给另一个变量在存储过程中,我用decode()试了下 ,但没整明白.希望大侠能给解决下  谢谢!

解决方案 »

  1.   

    decode(length(变量),5,变量值1,变量值2)
    如果length(变量)长度为5,则取变量值1,否则变量值2
      

  2.   

    decode(length(变量),5,变量值1,3,变量值2) 
    如果length(变量)长度为5,则取变量值1,
    如果length(变量)长度为3,则取变量值2,
    还可以加上DEFAULT值
    decode (expression, search_1, result_1, search_2, result_2,default)
    decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default
      

  3.   


    decode(length(变量),5,变量值1,变量值2)
    这里的变量值1与变量值2 没有值的情况下这样写可以吗? 我的意思是 如果字段值长度是5就把那个值赋给1个变量,如果是3就赋给另外一个变量
      

  4.   

    这个不能用decode或case
    可以先将值赋给一个临时变量参数
    然后通过if判断要赋给哪个参数
      

  5.   

    select deocode(length(字段),3,值,5,值) INTO 变量 FROM 表
      

  6.   


      select case when length(字段)=5 then 字段
                    when length(字段)=3 then 变量1
                    else NULL
             end
        into 变量2
        from 表名
       where 唯一检索key 
      

  7.   

    举例
    select decode(length(emp.ename),5,emp.empno,emp.mgr) from emp;
    结果
    77887698
    没有值会显示空,你也可以用NVL当没有值的情况输出默认值
    select decode(length(emp.ename),5,nvl(emp.empno,0),nvl(emp.mgr,0)) from emp;
    结果
    7788
    0
    7698