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

假如字符串为:'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报了一个不常见的错误. 本文分享自华为云社区<记一次mysql关联查询格式冲突问题[五月04]>,作者: KevinQ . 问题起源 作为CRUD程序员,最常 ...

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

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

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

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

随机推荐

  1. tomcat URL简写案例:模拟站点www.baidu.com的訪问

    tomcat URL简写案例:模拟站点  * 实际URL:http://www.baidu.com:8080/myweb/1.html  * 实际位置:F:\mywebapps\myweb\1.htm ...

  2. Spring 3 + Quartz 1.8.6 Scheduler Example--reference

    In this tutorial, we will show you how to integrate Spring with Quartz scheduler framework. Spring c ...

  3. [转] 有趣的JavaScript原生数组函数

    在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘obj ...

  4. jquery在ie浏览器下中文乱码的问题

    用jquery的ajax方法在调用后台数据发现中文乱码,无法解析中文的url,而在别的浏览器下面就不会,如下所示 $.ajax({ type:'get', url:'薛之谦-演员.lrc', asyn ...

  5. Python爬虫:获取糗事百科笑话

    为了收集笑话也是挺拼的,我就不相信你所有的都看过了.还有,请问哪位仁兄能指点之下怎么把网上抓取到的图片写到word里面,捉摸了好久都没弄出来.   糗百不需要登录,html直接解析,只要在reques ...

  6. Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command

    错误如下: Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibEx ...

  7. JS获取客户端的窗口大小

    function getClientSize() {    var c = window,    b = document,    a = b.documentElement;    if (c.in ...

  8. 一、初识T4引擎

    对于代码生成器我们并不陌生,在日常编码中这也是用的比较多的工具之一.一般代码生成器主要功能是生成公共或基础代码来减少编码人员的工作量,而一款优秀的代码生成器除了生产代码以外,同时兼具生成项目架构和基础 ...

  9. 【转】iOS6中的Auto Layout:通过代码添加约束

        最近做的项目用到了Auto Layout,于是经过了一番大量的google,这是我看到的讲用代码创建约束最清晰的一篇教程,于是想跟更多的人分享一下.原文也比较简单,可以直接过去看,如果我翻译的 ...

  10. protobuf的反射机制

    反射机制 java在运行状态时,能够知道任意类的所有属性和方法,都能够调用任意对象的任意方法和属性.这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. C++本身没有反射机制. ...