首页 > 数据库 >access数据库批量更新中无法使用replace,出现“表达式中 'replace' 函数未定义”的替代办法

access数据库批量更新中无法使用replace,出现“表达式中 'replace' 函数未定义”的替代办法

时间:2024-04-27 10:22:20浏览次数:29  
标签:aa 未定义 INSTR bbbb MID LEN replace access

如果我们想要批量修改数据库table_name表中aa字段中数据,将“|bbbb”删除

sql的批量更新中,通用语法是:
UPDATE table_name SET aa = REPLACE(aa, '|bbbb', '')

但是,如果是access数据库,就可能出现以下的报错信息:
Microsoft JET Database Engine 错误 '80040e14'
表达式中 'replace' 函数未定义。

这是因为,replace是MS SQL的通用函数,却是access的内部函数,在access中是可以运行的,但如果通过ado调用,就会出现以上错误。

有没有其它替代办法?有!
设aa="|aaa|bbbb|cccc"
我们要求将“|bbbb”批量替换掉,得到"|aaa|cccc"的简单办法是用replace,问题是ado调用的access不支持呀。

我们换个思路,首先定位“|bbbb”,然后用mid函数就可以解决这一问题
bb= MID(aa, 1, INSTR(aa, "|bbbb") - 1) & MID(aa, INSTR(aa, "|bbbb") + LEN("|bbbb"), LEN(aa) - INSTR(aa, "|bbbb") - LEN("|bbbb") + 1)
与bb=replace(aa,"|bbbb","")是等价的
注:这里假设aa中只有一个"|bbbb",如果有多个,请自行处置。这里仅提供一个思路。

以上sql语句就可以改成:
UPDATE table_name SET aa = MID(aa, 1, INSTR(aa, "|bbbb") - 1) & MID(aa, INSTR(aa, "|bbbb") + LEN("|bbbb"), LEN(aa) - INSTR(aa, "|bbbb") - LEN("|bbbb") + 1)
想要语句执行更高效点,先执行一个查询instr,如果有"|bbbb",再执行,就用到另外一个函数IIF
UPDATE table_name SET aa =IIF(INSTR(AA,"|bbbb")>0, MID(aa, 1, INSTR(aa, "|bbbb") - 1) & MID(aa, INSTR(aa, "|bbbb") + LEN("|bbbb"), LEN(aa) - INSTR(aa, "|bbbb") - LEN("|bbbb") + 1),aa)
以上语句在asp环境下,accees 2003执行通过

标签:aa,未定义,INSTR,bbbb,MID,LEN,replace,access
From: https://www.cnblogs.com/bypwq/p/18161792

相关文章

  • 从REPLACEMENT_OPERATOR_NEW_AND_DELETE看UE的堆内存管理及gcc相关实现
    观察为了让庞大代码库看起来更简洁一些,UE使用了不少C/C++黑魔法:宏。把一些重复或者繁琐的实现细节隐藏在了宏里面(例如最为常见且繁琐的GENERATED_BODY宏),尽管代码看起来更简洁,但也隐藏了一些(重要的)细节。在看UE插件实现时,意外的看到IMPLEMENT_MODULE宏定义中,不仅包含了初始化......
  • ACCESS 密码输入时,将输入法切换为英文状态
    细节问题,当在密码框内输入密码时,用户正在输入的密码,很容易就会被输入法给出卖了,如果旁边还有一些别有用心的人看着,那就不好了.如下图: 所以我们需要在激活密码框时,帮懒鬼用户把输入法切换成英文输入法.要实现这个功能,只需要把密码文本框的[输入法模式]设置为[关闭]......
  • Edge崩溃(Edge错误代码STATUS_ACCESS_DENIED的修复方法)
    0.问题今天由于在编写自动化脚本,edge浏览器自动填充表单功能十分烦人,会导致测试失败遂在选择每次关闭时清除浏览数据时,全选了所有选项(后来发现实际上只需要删除自动填充表单即可)然后重启edge后,坏事来了,首先旁边提示...扩展出错,请重新加载,而且所有网页(包括setting......
  • 《Pyramid Codes: Flexible Schemes to Trade Space for Access Efficiency in Reliab
    问题1:Introduction部分,第五段,[16,12]ERC和3-Copy达到了相同的可靠性,在每一个块独立失败概率为0.01的情况下,这个是怎么证明的。问题2:同上,第五段后半部分,那么多的IO次数是怎么计算出来的。在系统中,要分清各种性能指标,读和写是不一样的,第六段提到的是写性能,主要方法就是先用复制的方......
  • ReferenceError: Cannot access 'pageWrapper' before initialization
    jeecgboot-vue3的ReferenceError:Cannotaccess'pageWrapper'beforeinitialization错误问题问题描述基于jeecgboot-vue3框架进行开发时,不定期在浏览器控制台打印出ReferenceError:Cannotaccess'pageWrapper'beforeinitializationatindex.ts:7:40错误,且页面一......
  • mysql中replace into用法
    前言replaceinto跟insertinto功能类似,不同点在于:replaceinto首先尝试插入数据到表中如果发现表中已经有相同的数据(根据主键或者唯一索引判断)则先删除原来的数据,然后插入新的。否则,直接插入新数据。注意:插入数据的表必须有主键或者是唯一索引!否则的话,replaceinto会......
  • Idea报错 【cannot access com.xxx】的【解决办法】
    正常操作代码,一个类突然标红,提示 cannotaccesscom.xxx 。执行下面操作,执行完后项目变为正常 但是如果是你代码存在异常,可不是清缓存就能解决了,就要靠自己了哈哈 第一步File知道吧! 第二步点我箭头的位置知道吧 第三步点中间的ok?意思就是清缓存并重启idea的意......
  • nginx报错:bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a soc
    问题:1.nginx启动失败2.在logs/error.log文件下,出现报错信息:bind()to0.0.0.0:80failed(10013:Anattemptwasmadetoaccessasocketinawayforbiddenbyitsaccesspermissions) 目录:1、cmd输入命令netstat-aon|findstr"80"2.、查看80端口7532对应的任务3、......
  • C++未定义行为
    0前言未定义行为(UndefinedBehavior)是指语言标准未做规定的行为。同时,标准也从没要求编译器判断未定义行为,所以这些行为有编译器自行处理,在不同的编译器可能会产生不同的结果,又或者如果程序调用未定义的行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另......
  • java中字符串替换的4种方法 replaceAll() 带正则表达式参数 str.replaceAll("[0-9]+
    java中字符串替换的4种方法replaceAll()带正则表达式参数str.replaceAll("[0-9]+","");目录前言一、String的replace()方法二、String的replaceAll()方法三、StringBuffer/StringBuilder的replace()方法四、Matcher的replaceAll()方法总结前言在日常开发中,我们对......