本文中的mysql版本:5.7.33-log
需求
有一张数据表 表中有一个 in_image 字段 该字段存储的值都是:/static/image/20211219101816.jpg 这种格式的数据,其中 /static/image/ 这里是固定的,现在需求是 要把 in_image字段下的 /static/image/20211219101816.jpg 这种格式的数据 变成 https://image.test.com/test/20211219101816.jpg 这种;
主要就是把 每条数据的 /static/image/ 值变成 https://image.test.com/test/ 然后 拼接上余下的字符串。这里提供俩种方法:
方法一、使用mysql内置的REPLACE()字符串替换函数:
update tablename set in_image=REPLACE(in_image,'/static/image/', 'https://image.test.com/test/');
方法二、使用mysql内置的各种函数 组合实现改效果,示例语句如下:
-- 大概原理 主要是翻转in_image字段的值 然后截取/位置 最后拼接上 在截取好的字符串前面拼接上 https://image.test.com/test/值即可 UPDATE tablename SET in_image = CONCAT( 'https://image.test.com/test/', REVERSE( LEFT ( REVERSE( in_image ), LOCATE( '/', REVERSE( in_image ))- 1 )));
方法二使用到的mysql函数:
CONCAT():将多个字符串 拼接为 一个字符串
left():从左边截取(被截取字段,截取长度)
REVERSE(): 字符串翻转(str)
LOCATE():查找字符串收藏出现的位置 (查找字符串,查找位置,搜索的起始位置【它是可选的。默认为位置1】)
实现方法有很多种 这里列举2种 大家可以举一反三。。
推荐文章:mysql 连接字符串函数介绍(在现有的字符串前或后面添加字符串)
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论