一个"在ACCESS里的一行文本里如何截取一段数据"的问题

在ACCESS里,有这么一列
里面包含的内容为:
AA市BB区 CC镇DD村EE号.......
AA市BB区 CC乡DD村EE号.......
AA市BB区 CC办事处DD村EE号.......
AA市BB市 CC镇DD村EE号.......
AA市BB市 CC乡DD村EE号.......
AA市BB市 CC办事处DD村EE号.......

甚至有些内容直接是:
BB市 CC镇DD村EE号.......
BB市 CC乡DD村EE号.......
BB市 CC办事处DD村EE号.......

这些内容很多很繁杂很不规则,
但是也是有关键字的,即------
在这串数据里,
见着关键字为"区(市)",就删除包括"区(市)"在内的字符串前面部分全部内容,
见着关键字为"镇(乡)(办事处)"的,就删除"镇(乡)(办事处)"后面的全部内容.

我需要的结果为---只显示CC镇或乡或办事处

请教各位大大,这个语句该怎么写?

请问,这个的语句该怎么写?

〓〓注意〓〓
需要是能在ACCESS里面能使用的语言...!!
补充一点,BB市这里,多一个关键字"县",即也有可能是 BB县..

实例:
字段一
AA市忠县石黄镇石黄村二组89号
AA市杨家坪重百大楼16-7
AA市
丰都县名山镇
AA忠县两河乡中山村4组
忠县两河乡白花村一组32号
AA市大渡口区文体支路500号附20号
AA市忠县两河乡华山村1组
AA市丰都县名山镇商业路144号17幢1号
AA市忠县两河乡白花组村
AA忠县白石镇坪坝村1组9号
AA市忠县拔山镇长石村十三组10号
AA市忠县两河乡白河村三组
AA市万州区复兴路城27号802
忠县两河乡菜园村2组
AA市忠县忠州镇压乐天路19号附1号8-2
复兴路坡27号
AA市忠县两河乡两河乡白花村9组
AA市大渡口区文体支路500号附20号
AA市忠县忠州镇人民路二巷135号
AA忠县两河乡中坪村5组
忠县官坝镇释友村9组80号
忠县石黄镇石黄村
忠县官坝镇官坝场

我的机器上没有ACCESS,无法在ACCESS上验证,可以使用下面的原理进行替换:

删除字段中“县”之前的SQL:
UPDATE 表名 SET 字段名=RIGHT(字段,LEN(字段)-FIND("县",字段)) WHERE FIND("县",字段)>0

删除字段中“乡”之后的SQL:
UPDATE 表名 SET 字段名=LEFT(字段,FIND("乡",字段)-1) WHERE FIND("乡",字段)>0

多次执行上面的SQL就可以得到满足你要求的数据。

如果ACCESS不支持FIND、LEFT、RIGHT等函数,你试试看POS、SUBSTR等,原理很容易理解。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-05
删除字段中“县”之前的SQL:
UPDATE 表名 SET 字段名=RIGHT(字段,LEN(字段)-FIND("县",字段)) WHERE FIND("县",字段)>0

删除字段中“乡”之后的SQL:
UPDATE 表名 SET 字段名=LEFT(字段,FIND("乡",字段)-1) WHERE FIND("乡",字段)>0

多次执行上面的SQL就可以得到满足你要求的数据。

如果ACCESS不支持FIND、LEFT、RIGHT等函数,你试试看POS、SUBSTR等,原理很容易理解。
第2个回答  2009-02-24
条条大路通罗马,非得在ACCESS中实现呀,程序代码中不能玩?

一个"在ACCESS里的一行文本里如何截取一段数据"的问题
删除字段中“县”之前的SQL:UPDATE 表名 SET 字段名=RIGHT(字段,LEN(字段)-FIND("县",字段)) WHERE FIND("县",字段)>0 删除字段中“乡”之后的SQL:UPDATE 表名 SET 字段名=LEFT(字段,FIND("乡",字段)-1) WHERE FIND("乡",字段)>0 多次执行上面的SQL就可以得到满足你要求的数据。如果...

access 中 sql 截取部分数据的问题
如果网址都是单纯的com还好说,但如果还有其它的 .cn、.com.cn、.org等,在sql语句里面处理就不好办了,最好先把数据加载到程序里,在程序里处理完在写入b表

ACCESS 数据库 字符串如何截取其中数字排序
如果字段值开始都是数字的话,那么使用Val函数来排序最为便捷。例如运行SQL语句:select * from 表名order by val(排序字段名)如果表中只含上述数据 那么该语句返回下列排序效果 说明 Val函数 返回包含于字符串内的数字,字符串中是一个适当类型的数值。在它不能识别为数字的第一个字符上,停止读入字...

access的数据库 字段截取问题
新建一个查询,切换到SQL视图,输入:SELECT *, Left(内容,400) AS 新内容 FROM 表名;以后在ASP查询的时候就把这个查询当表用就行了 注意:我看到很多人回答的都是800,实际上在Access中,对于字符串长度的计算一个英文和一个汉字的长度都是1,因此用400就可以了。

access中截取某个字符串左边的所有数据
先用InStr([表名]![字段名],"字符")定位出“字符”在这个字段中第一次出现的位置,然后再用LEFT()去取左边的字符。你应该会吧。Left([字段],instr([字段],"a")-1)上面这函数表示,比如字段是这样的 132a12312fdsf ,它就截取132,即a前面的所有字符 ...

access 在 窗体1 中的一个文本框内,如何获得表1中某列符合条件的对象数...
"Set RS = New ADODB.Recordset RS.Open "SELECT * FROM 数据表 WHERE 你要查询的列=B010101", str, adOpenStatic, adLockReadOnly MsgBox(RS.RecordCount)'这就是你要的结果 查询条数 RS.Close Set RS = Nothing 要是还不会就去重新学吧 ACCESS VBA很少用得到的 还不如学个VB ...

Access如何从一个窗体中引用另外一个窗体的指定变量内容?
如果是,比较方便的做法是创建一个按单位作为查询条件的查询,并以此查询创建数据表窗体,然后再将查询条件关联主窗体中显示单位的文本框或复合框,这种做法只要创建一个查询子窗体即可,只要在你双击或下拉选择单位时触发事件,在事件代码中打开子窗体并重新查询即可。

access 分割字符串的问题
1. 假设要查询的字段名称是,NumName;新建一个查询字段(全部英文):NewNumName: [NumName] & "" 这样就将那个数字串,转为字符串了.2. 然后再在条件中写入:like "*2*" 即可 3. 如果要使用SQL语句:Select [NumName] & "" as NewNumName from Tab1 where [NewNumName] like "*2*"...

access我想做一个窗体,可以根据原表或查询里的字段提取数据,怎么弄?
1)先做个查询:SELECT * FROM 表1 WHERE A = 16 AND B = 20 2)基于这个新作的查询创建自动窗体即可

如何将ACCESS表中一个字段内的相同数据或者文本筛选出来
可以使用对该字段分组计数、再筛选小组计数大于1这个办法,筛选出有重复的记录。例如:select [被查字段名] from 表名 group by [被查字段名] having count([被查字段名])>1 如果需要输出所有字段,则可以这样写:select * from 表名 where [被查字段名] in (select [被查字段名] from 表名 ...

相似回答