sql语句去掉括号及中括号中的内容,大型数据库与access数据库

在处理Access数据库时,遇到需要去除字段中括号及其内容的问题。通过使用SQL语句,结合instr和substr函数,成功实现了对中括号和小括号的去除。在遇到Access不支持reverse函数的情况时,通过转换思路,利用left和instr函数解决了问题,避免了类型转换错误。同时,对于不同情况的括号内容,通过多次截取和拼接实现了全面清理。

我有两个表数据如下

 

 我需要把两个表中的校名对应,但是第一个表格中有[公办][民办](北京市)(天津市)等,比较麻烦,我要把字段中所有带中括号和小括号的内容去掉,一般数据库去括号用以下语句可以完成

数据示例:

在description_1文本后有(《焦点访谈》:blabla…)

去除方法:

update jdft_text set description_1 = replace(description_1,(reverse(substr(reverse(description_1) , instr(reverse(description_1),')')+1 , instr(reverse(description_1),'《')+1))),'') 

表名为jdft_text

更改表格数据内容的sql语句:

updata 表名 set 字段名 = 新值
1
更改的是descrption_1字段,要将 (《焦点访谈》:blabla…) 替换为空白

接下来的任务是找到 (《焦点访谈》:blabla…)

用reverse将字符串翻转,这样")"就到了字符串的最前端。 其他文本+(《焦点访谈》:blabla…) 变为 :)…albalb:》谈访点焦《( +本文他其

substr:用来截取数据库某个字段中的一部分。语法:substr(string,start,length)。这时候要找到 )…albalb:》谈访点焦《( 在文本中的起始位置和长度。

instr:用来返回子字符串在原始字符串第一次出现的位置。语法:instr( 原始字符串,目标字符串)

故在substr中起始位置可写为

instr(reverse(description_1),')')+1
1
在substr中长度信息可根据"》"做判断:

instr(reverse(description_1),'《')+1
1
最后综合在replace里可去除()及其内容

↑以上蓝字内容引用自百度文库

用大型数据库的话上面很方便,但我用的access,相比其他数据库,他原始,简单,当然能够提供的操作函数也特别少,所以我再测试以上函数时发现,我无法使用reverse函数,我只能自己想办法。

备份数据库以防万一。

新建字段yxmc0,用来存储字段,防止操作失误影响原数据。

我的数据中可能含有小括号也可能含有中括号,为了简便,我把所有的左小括号换成左中括号,然后再去掉,写函数就简单了。

替换语句

update zytb_ycls2022 set yxmc0=replace(yxmc,'[','(')

左中括号全部变成左小括号 。

因为我的数据结构相对简单,有括号就一定在我要获取文字的后方,所以我用的方法就是截取字符串函数left.

update 带括号表 set yxmc0=left(yxmc0,instr(yxmc0,'[')-1)

出错了~~~~(>_<)~~~~ 

仔细阅读,错误的核心是【类型转换失败】

为什么存在类型转换呢?

可能是因为有些数据中没有括号,那么left的第二个参数就成为-1,这样不可能是正确的字符串类型了。

加一条判断就行了

update zytb_ycls2022 set yxmc0=left(yxmc0,instr(yxmc0,'(')-1) where instr(yxmc0,'(')>0

顺利去除~\(≧▽≦)/~

我保留了原始字段,也是方便以后继续用。

如果不是【保留内容+括号】的格式呢?

先取得左括号,然后取得右括号,左括号左侧内容+右括号右侧内容,left(yxmc0,instr(yxmc0,'(')-1)+right(yxmc0,instr(yxmc0,')') )

如果有多个括号再多截取几次吧。仔细研究instr函数即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值