请教:
SELECT 'IGRP'+RIGHT(1000000001+ISNULL(RIGHT(MAX(ProTeamCode),9),0),9) as ProTeamCode FROM t_ProTeam WITH(XLOCK,PAGLOCK)SELECT RIGHT(1001+ISNULL(RIGHT(MAX(ProTeamVisiTCode),3),0),3) as ProTeamVisitCode FROM t_ProTeamVisit WITH(XLOCK,PAGLOCK) WHERE PROTEAMVisitCode like '{0}%'这两句在SQLSERVER中的语法,在ORACLE中应该如何修改?

解决方案 »

  1.   

    select substr('abcdefg',-4) from dual
    这个语句达到的效果是从'abcdefg'取'defg'
      

  2.   

    SELECT 'IGRP'+substr(1000000001+NVL(substr(MAX(ProTeamCode),-9),0),-9) as ProTeamCode FROM t_ProTeam; ..
    SELECT substr(1001+NVL(substr(MAX(ProTeamVisiTCode),-3),0),-3) as ProTeamVisitCode FROM t_ProTeamVisit  WHERE PROTEAMVisitCode like '{0}%';WITH(XLOCK,PAGLOCK) 如果是加锁的话,改为 for update??
      

  3.   

    SELECT 'IGRP'||substr('1000000001'||NVL(substr(MAX(ProTeamCode),-9),'0'),-9) as ProTeamCode FROM t_ProTeam; ..SELECT substr('1001'||NVL(substr(MAX(ProTeamVisiTCode),-3),'0'),-3) as ProTeamVisitCode FROM t_ProTeamVisit  WHERE PROTEAMVisitCode like '{0}%';不知道ProTeamCode和ProTeamVisiTCode是什么类型?否则需要to_char把数字转为字符串,另外字符串连接不是+,而是||
      

  4.   

    select *
    from a
    left join (select * from b) x on a.id=b.id
      

  5.   

    select length('abcdef'),substr('abcdef',length('abcdef')-4+1,4) from dual
      

  6.   

    substr(字符串,lengyh(字符串)-长度+1)
      

  7.   

    从字符串最右边取N位。
    right('asdf',2)='df';
    就是oracle的 substr('asdf',-2);第二个参数为负,表示从右往左截。
      

  8.   

    关于sql server与oracle函数的对照
    http://jinjun001.spaces.live.com/Blog/cns!1pUAHMm-K7gO0MxAWlUsrKWw!196.entry