我原来在SQL Server区问的(看错区了,呵呵),两位热心的朋友告诉我的都不行,他们是这样说的:
update register
set customerid=right('0000'+rtrim(c.BRANCH_NO),4)+right(c.CUSTOM_NO,8)
from f_cust c
where register.iDCard is not null
and register.iDCard=c.CAupdate r
set customerid=
   CASE len(rtrim(c.BRANCH_NO))
        when 1 then '000'+rtrim(c.BRANCH_NO)+right(c.CUSTOM_NO,8)
        when 2 then '00'+rtrim(c.BRANCH_NO)+right(c.CUSTOM_NO,8)
        when 3 then '0'+rtrim(c.BRANCH_NO)+right(c.CUSTOM_NO,8)
   ELSE rtrim(c.BRANCH_NO)+right(c.CUSTOM_NO,8)
   END
from register r,f_cust c
where r.iDCard is not null
and r.iDCard=c.CA可是我都报错:ORA-00933:SQL command not properly ended

解决方案 »

  1.   

    是update语法出错吧,oracle中update的写法是:
    update 表名 set 列名 where (条件)
    你用这个写法试试?
      

  2.   

    还有点时间,写写看。
    update register a
    set a.customerid=right('0000'+rtrim(c.BRANCH_NO),4)+right(c.CUSTOM_NO,8) 
    where (select a.customerid from f_cust c
    where register.iDCard=c.CA and register.iDCard is not null
      

  3.   


    update register a
    set customerid=select lpad(branch_no,4,'0')||substr(custom_no,-1,8) from f_cust where a.CA=IDCard;