主题:请问,怎么把一个字段内的所需要的内容提取出来呢?
coffeenight
[专家分:230] 发布于 2009-09-14 09:54:00
在数据库里是这个样子的
[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]
请问该怎么把所需要的内容提取出来呀?谢谢
最后更新于:2009-09-14 10:18:00
回复列表 (共2个回复)
沙发
sywzs [专家分:5650] 发布于 2009-09-14 10:50:00
请参考我在《求助,怎么从一个字段中抽取内容填充新字段内容?》中的回帖。
板凳
Gleam [专家分:3100] 发布于 2009-09-14 15:04:00
参考一下字符串截取和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语句来实现,因为关系个数不确定。要先将关系整理出来,然后再提取。
我来回复