用SQL替换最后一个指定字符后面的所有字符

时间:2021-02-18 23:00:42

下面给出任意字符串,该字符串长度未定,只知道该字符串有许多个‘-’连接起来的,现在要把最后一个‘-’后面的字符替换掉为指定串。

假如字符串为:'x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl',我们把最后一个‘-’后面的‘4lldfl’替换成‘1593654’,该如何写SQL。

思路:

1.SQL的函数中没有直接获取最后的指定字符的位置。那我们如何获取最后‘-’的位置呢?

2.我们只知道字符串的长度不会变,如果能将字符串倒序排列,获取第一个‘-’的位置,再用字符安串长度减去第一个‘-’位置,那就是最后个‘-’的位置。 是吧。

3.所以 可以用到SQL 的REVERSE函数,该函数可以将字符串倒序排列,REVERSE('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl')

4.获取第一个‘-’的位置,用CHARINDEX函数,第一个参数查找字符,第二参数是字符串。即:CHARINDEX('-',REVERSE('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl'))

5.现在是倒序排列的第一个‘-’,要获取正常排序的串,我们应该用整体长度减去第4步的值。即:len('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl')-CHARINDEX('-',REVERSE('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl'))

6.因为第5步,没有包括‘-’,所以要加上1才包括了最后一个‘-’。即:len('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl')-CHARINDEX('-',REVERSE('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl'))+1

7.我们可以用 left函数获取,从左边一直到后面的第N个字符再加上‘1593654’。即:left('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl',len('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl')-CHARINDEX('-',REVERSE('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl'))+1)+'1593654'

8.整体的SQL如下:

SELECT LEFT('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl',LEN('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl')-CHARINDEX('-',REVERSE('x1253-axebx-xcdx-o9kgl-3ddll-llllll-4lldfl'))+1)+'1593654'

用SQL替换最后一个指定字符后面的所有字符的更多相关文章

  1. SQL(replace)替换字段中指定的字符

    语法:update 表名 set 字段名=REPLACE(字段名,'修改前的字符','修改后的字符') 例 Product商品表中Name 名字字段中描述中将'AAA' 修改成 'BBB' SQL语句 ...

  2. SQL 判断字段中指定字符出现的次数

    原文地址:SQL 判断字段中指定字符出现的次数 原理:将指定字符转换为空,原长度减去转换后的长度就是指定字符的次数. 在做数据处理时遇到一个SQL操作的问题就是有一列关键词字段,字段中包含各种乱七八糟 ...

  3. python3 替换字符串中指定位置字符

    大家都知道字符串在python中是不可变数据类型,那么我们如何替换字符串中指定位置的字符呢? 字符串转换列表替换并转换解决: def replace_char(string,char,index): ...

  4. 给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)

    需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换) 如: a 不替换 b 不替换  ab 不替换 ba 不替换 aba 不替换  aab 替换为 ...

  5. SQL替换语句 批量修改、增加、删除字段内容

    sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符. 命令总解:update 表的名称 set 此表要替换的字段名=REPLACE(此表要替换的字段名, '原来内 ...

  6. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值:      场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示 ...

  7. 怎样用SQL语句查询一个数据库中的所有表?

    怎样用SQL语句查询一个数据库中的所有表?  --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...

  8. SQL Server的一个不显眼的功能 备份文件的分割

    SQL Server的一个不显眼的功能 备份文件的分割 当完整备份数据库的时候,我们有时候可能会遇到一种极端情况,比如服务器上C,D,E三个盘符都只剩下5G空间了 但是如果要完整备份业务库需要12G的 ...

  9. SQL Server判断某个字段是否包含中文/英文字符/数字

    原文:SQL Server判断某个字段是否包含中文/英文字符/数字 因最近在清理系统中的脏数据,需要查询某个字段是否包含中文/英文字符/数字的数据, 比较简单,仅以此篇博客做一个简单总结,方便以后查阅 ...

随机推荐

  1. js面试题之数组去重对比

    最近看一些面试题,很多都提到了数组去重,用的最多的不外乎就是下面这个例子 arr.filter(function(value,index,arr){ return arr.indexOf(value, ...

  2. 字符转换(C、C++)

    标准C和C++库提供了一些转换工具.但是它们在易用性.扩展型和安全型上各有不同. 例如,以atoi为代表的一系列标准C函数就有一些限制: * 只支持单向转换:从文本到内部数据类型.要用C库函数实现另一 ...

  3. oracle创建表相关

    --创建表 create table person( id number primary key, name ), birth date ); --创建序列 create sequence perso ...

  4. Sonar + Jacoco,强悍的UT, IT 双覆盖率统计(转)

    以前做统计代码测试覆盖,一般用Cobertura.以前统计测试覆盖率,一般只算Unit Test,或者闭上眼睛把Unit Test和Integration Test一起算. 但是,我们已经过了迷信UT ...

  5. Redis未授权访问缺陷让服务器沦为肉鸡

    朋友的一个项目说接到阿里云的告警,提示服务器已沦为肉鸡,网络带宽被大量占用,网站访问很慢,通过SSH远程管理服务器还频繁断开链接.朋友不知如何下手,便邀请我帮忙处理. 阿里云的安全告警邮件内容: 在没 ...

  6. 【Oracle】ORA-06550 PLS-00201

    ORA-06550 第1行,第7页 PLS-00201 必须声明标识符“PROC_****” 改错了首先检查连接的数据库库里面有没有这个存储过程.(检查是否配置对了数据库)

  7. VueJS实现一个货币结算自定义控件

    Vue.component('currency-input', { template: '\ <div>\ <label v-if="label">{{ l ...

  8. MongoDB系列三(Spring集成方案)&period;

    一.前言 MongoDB是最为流行的开源文档数据库之一.Spring Data MongoDB提供了三种方式在Spring应用中使用MongoDB: 通过注解实现对象-文档映射: 使用MongoTem ...

  9. python练习题-day8

    1.有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读出来并打印. wi ...

  10. 九数组分数&vert;2015年蓝桥杯B组题解析第五题-fishers

    九数组分数 1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. #include <stdio.h> void t ...