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


    我有两个表数据如下

     

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

    数据示例:

    在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函数即可。

  • 相关阅读:
    百题千解计划【CSDN每日一练】收件邮箱(使用Python、Java、JavaScript解决)无敌的Python正则表达式、零宽负向断言
    嵌入式要卷成下一个Java了吗?
    Redis的发布订阅在SpringMVC(或xml配置)项目中使用(注意版本兼容问题)
    人工神经网络是模拟什么进行信息处理的一种数学模型
    c语言进阶篇:指针(二)
    Linux Shell脚本自动化编程实战【1.4 shell特性 Login Nologin】
    学院打卡第十五天
    [Study]计算机网络
    OBS使用
    驱动开发(二):创建字符设备驱动
  • 原文地址:https://blog.csdn.net/mytoday2004/article/details/126026821