回 帖 发 新 帖 刷新版面

主题:请问,怎么把一个字段内的所需要的内容提取出来呢?

在数据库里是这个样子的

[img]http://blog.xmfish.com/attachments/2009/09/32049_2009091410130715CR4.jpg[/img]

现在要把它填到如下的表格当中去(word表格,邮件合并)
[img]http://blog.xmfish.com/attachments/2009/09/32049_200909140948031R0TJ.jpg[/img]
  
请问该怎么把所需要的内容提取出来呀?谢谢

回复列表 (共2个回复)

沙发

请参考我在《求助,怎么从一个字段中抽取内容填充新字段内容?》中的回帖。

板凳

参考一下字符串截取和at()的用法。
比如你的表格的家庭成员内容如下:
胡*国|父女|湖北省随州市曾都区吴山镇唐王中心小学教师|13797***708#张*员|母女||#胡佳宜|姐妹|湖北省武汉理工大学|
local gnatno, gcstrhome, gcstrcur, gcname, gcrela, gcunit, gctel 
&标志符的位置,剩余字符串,当前字符串,姓名,关系, 单位,  电话
select tablename
go top
scan
    gcstrhome = alltrim( tablename.jtcy) + "#" &&加“#”是为了截取的时候减少判断。因为你的数据最后没有“#”结束。
    do while len( gcstrhome) > 2  &如果字符串的长度小于2,那么就是无效的数据
        *整理关系字符串,将合并的关系分解,gcstrcur为单个关系组合
        gnatno = at( "#", gcstrhome)
        gcstrcur = alltrim( left( gcstrhome, gnatno - 1))
        gcstrhome = alltrim( right( gcstrhome, len(gcstrhome) - gnatno)))
        
        *将单独的关系组合分解成单个元素
        *取姓名
        gnatno = at( "|", gcstrcur)
        gcname = left( gcstrcur, gnatno - 1)  
        *取关系
        gcstrcur = alltrim( right( gcstrcur, len(gcstrcur) - gnatno)))
        gnatno = at( "|", gcstrcur)
        gcrela = left( gcstrcur, gnatno - 1)
        *取单位职务
        gcstrcur = alltrim( right( gcstrcur, len(gcstrcur) - gnatno)))
        gnatno = at( "|", gcstrcur)
        gcunit = left( gcstrcur, gnatno -1)
        *取联系方式
        gctel = alltrim( right( gcstrcur, len(gcstrcur) - gnatno)))

        *将分解后的元素放入已定义好的关系表 rela 中
        select rela &选择关系表,该表是定义好的,结构和你的关系图是一样的。
        INSERT INTO rela ( cname, crela, cunit, ctel ) ;
     VALUES( gcname, gcrela, gcunit, gctel )
        select tablename
    enddo
endscan

程序我没有调试,你自己看看有没有错误。你现在的结构很难用SQL语句来实现,因为关系个数不确定。要先将关系整理出来,然后再提取。

我来回复

您尚未登录,请登录后再回复。点此登录或注册