表一
编号 档案号               
1    123456789012345     
2    123456789012345     
3    543256789012345 
4    853456789012345 
5    423456789012345 ...表二  
ID   档案号   
1    123456789012345 
2    543256789012
3    85345678901
...如上所示
表二中的档案号本来在表一中是都有的,但是现在的问题是表二中的档案号不完整了,有的被切掉了后面几位,请注意观察表二中的id=2和3的情况!现在想写一个SQL或存储过程把被切掉的补上
如上例:
修改后,表二应该是
表二  
ID   档案号   
1    123456789012345 
2    543256789012345
3    853456789012345
...

解决方案 »

  1.   


    不知道行不行,很久没有用sql了
    update Set b.档案号=a.档案号 
    from a,b
    where a.档案号 like b.档案号 + '%'
      

  2.   

    本来写一个程序可以解决,但是我为了学好T-SQL,所以拿出来让大家帮一下忙,我也可以从中学到一些好的思路,谢谢!
      

  3.   

    select 档案号 from 表二
    ......
    while(结果.next()){
    String dah = rs.getString(档案号);select 档案号 from 表二 where 档案号 like '%%%%%%%%%%'+dah+'%%%%%%%%%%';update 表二 set 档案号=表一.档案号
    }在没有重复下可行
      

  4.   

    select 档案号 from 表二
    ......
    while(结果.next()){
    String dah = rs.getString(档案号);select 档案号 from 表一 where 档案号 like '%%%%%%%%%%'+dah+'%%%%%%%%%%';update 表二 set 档案号=表一.档案号
    }在没有重复下可行
      

  5.   

    我的思路是
    1.找出表二中那些不全的档案号
    select 档案号,税号 from 表二 where len(档案号)<=12 
    2.根据税号去找到表一中的档案号
    select 档案号,税号 from 表一 where a.税号=b.税号
    上面这一句只是我的一种表示,可能要通过游标才能实现
    3.update 表二 set 档案号=a.档案号 where ...
    这样一个过程要如何实现,请指教
      

  6.   

    如果仔細想一想的話,應該是不能用SQL語句能完成的。
      

  7.   

    xayzmb(行者)好象不可能
    比如原来的号是
    123456000000
    123456111111
    缺损后的号是:
    123456
    1234
    这两个号你准备怎么修复
    只是一个想法而已
    仅供参考。_____________________
    说的对啊,这是用什么SQL还是程序都不能解决的问题