用SQL替换最后一个指定字符后面的所有字符
下面给出任意字符串,该字符串长度未定,只知道该字符串有许多个‘-’连接起来的,现在要把最后一个‘-’后面的字符替换掉为指定串。
假如字符串为:'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替换最后一个指定字符后面的所有字符的更多相关文章
- SQL(replace)替换字段中指定的字符
语法:update 表名 set 字段名=REPLACE(字段名,'修改前的字符','修改后的字符') 例 Product商品表中Name 名字字段中描述中将'AAA' 修改成 'BBB' SQL语句 ...
- SQL 判断字段中指定字符出现的次数
原文地址:SQL 判断字段中指定字符出现的次数 原理:将指定字符转换为空,原长度减去转换后的长度就是指定字符的次数. 在做数据处理时遇到一个SQL操作的问题就是有一列关键词字段,字段中包含各种乱七八糟 ...
- python3 替换字符串中指定位置字符
大家都知道字符串在python中是不可变数据类型,那么我们如何替换字符串中指定位置的字符呢? 字符串转换列表替换并转换解决: def replace_char(string,char,index): ...
- 给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)
需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换) 如: a 不替换 b 不替换 ab 不替换 ba 不替换 aba 不替换 aab 替换为 ...
- SQL替换语句 批量修改、增加、删除字段内容
sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符. 命令总解:update 表的名称 set 此表要替换的字段名=REPLACE(此表要替换的字段名, '原来内 ...
- Excel中如何截取字符串中指定字符后的部分字符
1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示 ...
- SQL报了一个不常见的错误,让新来的实习生懵了
摘要:前些天一个很简单的SQL报了一个不常见的错误. 本文分享自华为云社区<记一次mysql关联查询格式冲突问题[五月04]>,作者: KevinQ . 问题起源 作为CRUD程序员,最常 ...
- 怎样用SQL语句查询一个数据库中的所有表?
怎样用SQL语句查询一个数据库中的所有表? --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...
- SQL Server的一个不显眼的功能 备份文件的分割
SQL Server的一个不显眼的功能 备份文件的分割 当完整备份数据库的时候,我们有时候可能会遇到一种极端情况,比如服务器上C,D,E三个盘符都只剩下5G空间了 但是如果要完整备份业务库需要12G的 ...
随机推荐
- 几句话实现导航栏透明渐变 – iOS
首先我们来看下效果 一开始当我们什么只设置了一张图片作为它的头部视图的时候,它是这样的 首当其冲的,我们先得把导航栏弄透明 那么我们首先得知道,设置navigationBar的BackgroundCo ...
- Java基础知识强化之IO流笔记05:try...catch...finally包含的代码是运行期的
1. 代码示例: 上面看到的第13行: Date d = null;(这里必须初始化) 第14~20行使用try...catch...finally包含代码,这里的代码已经变成运行期代码.此时我们 ...
- Bernese安装及使用
一.安装: 伯尔尼软件的安装很简单,但是在64位下,可能perl解释器安装不成功,我找了一个,并且可用,下载地址: 链接:http://pan.baidu.com/s/1hr8fgEC 密码:fj8b ...
- codevs 3336 电话网络
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...
- GIT学习(一)-->Git产生的历史原因
首先要说:Git是目前世界上最先进的分布式版本控制系统(没有之一). git的作者:Linus,林纳斯(下图就是,先膜拜一下,因为成就可不止这一点) 他是为何要写git的呢?话说 Linus虽然创建了 ...
- 静态html传参数
记下来备忘 a.html <html> <head> <body> <a href="c.html?test=大师大师" target=& ...
- crud的意识
CRUD说的就是增查改删C:Create 增加对应CREATE TBL ...: ADD TBL IN (...) VALUES (...)R:Retrieve查询SELECT * from TBLU ...
- 认识CSS样式
CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式,如文字大小.颜色.字体加粗等. 如下列代码: p{ font-size: ...
- MySQL 查询数据
MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据. 语法 以下为在MyS ...
- MySQL 管理
MySQL 管理 启动及关闭 MySQL 服务器 首先,我们需要通过以下命令来检查MySQL服务器是否启动: ps -ef | grep mysqld 如果MySql已经启动,以上命令将输出mysql ...