一、数据库结构:
1、新导入的数据库A,含有字段“用户资料”,字段内容为“姓名/性别/年龄/部门”
2、系统自有数据库B,内有字段“姓名”“性别”“年龄”“部门”
二、问题:
由于要定期从其他地方导入用户资料数据,且数据有点大,但是两表格式不一致,请问有没有办法用SQL语句分离A表的数据,然后更新或者插入到B表。

解决方案 »

  1.   

    declare @A table(UserInfo nvarchar(50))
    insert into @A
    select N'小王/男/24/Depart1' union
    select N'小李/男/28/Depart2' union
    select N'小张/男/29/Depart3'
    declare @B table(name nvarchar(4),sex nvarchar(1),age int,department nvarchar(20))insert into @B
    select name,substring(replace(UserInfo,name+'/',''),0,charindex('/',replace(UserInfo,name+'/',''))) sex,
    reverse(substring(reverse(replace(UserInfo,'/'+department,'')),0,charindex('/',reverse(replace(UserInfo,'/'+department,''))))) age,department
    from
    (
    select substring(UserInfo,0,charindex('/',UserInfo)) name, 
    reverse(substring(reverse(UserInfo),0,charindex('/',reverse(UserInfo)))) department,UserInfo 
    from @A
    ) tselect * from @B/*
    name sex  age         department
    ---- ---- ----------- --------------------
    小李   男    28          Depart2
    小王   男    24          Depart1
    小张   男    29          Depart3
    */
      

  2.   

    原数据是从哪来的呢?
    如果是从外部文件导入的话,能否先分列在导入数据库呢?
    SSIS 导入导出工具可以完成分列的操作,很简单。如果一定要在数据库中处理的话,可以参考:
    http://www.cnblogs.com/jhobo/archive/2007/06/06/773858.aspx
    http://www.cnblogs.com/weiweictgu/archive/2009/04/11/1433706.html