oracle 数据库表有一列数据的值是001002003这种类型的,每三位数字代表的是一个单位或部门,前后是上下级的关系,
但是不一定多么长有的是001002有的是001002003004等,我想取除最后3位的值怎么取来着,比如:如果是001002003,我想取的值是001002,就用一条语句。因为数据比较多一条一条手动改太慢了。

解决方案 »

  1.   


    declare @value nvarchar(200)
    select @value='001002003'
    select stuff(@value,len(@value)-2,3,'') as TheEnd
    /*
    TheEnd
    ------------------
    001002(1 行受影响)
    */
      

  2.   


    SQL> with tb as (select '001002003' as column1 from dual
      2       union all select '001002' as column1 from dual)
      3  select substr(tb.column1,0,length(tb.column1)-3) as result from tb;
     
    RESULT
    ------------------
    001002
    001
      

  3.   

    changeVaule=substr(actualVaule,1,length(actualVaule)-3),前提是actualVaule之前的栏位长度大于三,否则异常