0.背景

文件url 文件名
/usr/local/img/goods/1/2021-12-22-e05bb433bc7a451ca5d7cc9d505d8ed8.jpg 酸枣糕.jpg
/usr/local/img/goods/2/2021-12-21-e05bb433bc7a451ca5d7cc9d505ffffffff.jpeg x熊猫.可爱.jpeg

最初的设计是文件名(中文)和文件路径分开,文件路径的文件名是日期+UUID,同时防止上传的文件重复(如果重复上传不会删除之前的,可能是文件名重复或者文件名和内容都重复了)。但下载的时候日期+UUID的文件名不利于阅读,所以做一个缝合怪。

文件url命名为:日期+UUID+文件名+后缀

2021-12-22-e05bb433bc7a451ca5d7cc9d505d8ed8-酸枣糕.jpg

1.分析

  • 文件后缀有多重形式,doc、xls、xlsx、jpg、jpeg、pdf等。
  • 文件名里面可能有多个 . ,要找到最后一个

2.解决方法

sql批量处理,先去除多余空格;然后反转文件url的值,这样即使有多个.,但文件名后缀的.肯定是反转后遍历到的第一个;然后就定位到了位置;使用replace方法把后缀都去除;最后用concat将文件url和文件名进行拼接。

参考:https://blog.csdn.net/hr541659660/article/details/76619363

-- 移除多余空格
SELECT old_name,location,RIGHT(RTRIM(文件URL), LOCATE('.',REVERSE(RTRIM(文件URL)))) AS 文件名后缀,LOCATE('.',REVERSE(RTRIM(文件URL))) 句号的位置 FROM table_name -- 移除右边多余空格
SELECT RTRIM(' barbar ') AS 移除右边多余空格; -- 反转
SELECT REVERSE(RTRIM('abcde')) AS 反转; -- locate(str1,str2) 定位str1出现的位置
SELECT LOCATE('d','abcde'); -- RIGHT(s,n) 函数返回字符串 s 最右边的 n 个字符
SELECT RIGHT('MySQL',3);

MySQL 某一列的值加入到另一列的更多相关文章

  1. 页面载入时通过获取GridView某行某列的值来控制某一列的控件属性

    通过获取状态来控制"查看"button的Visible属性值. 在前台GridView中加入 OnRowDataBound="GridView1_RowDataBound ...

  2. 【ExtJs】在Ext.grid.Panel中,两列的值相乘作为第三列的值的实现

    如: 商品总价=商品单价*商品数量 方法: 商品总价列,使用其renderer属性,为期定义一个方法,该方法将当前record中的另外两列中2个数据相乘后渲染到该商品总价列.

  3. sql server 将两列的值合并到另一列

    select top 100 t2.FullName, * from Subject,(select id, isnull(first_name,'') +isnull(middle_name,'') ...

  4. innodb 自增列重复值问题

    1 innodb 自增列出现重复值的问题 先从问题入手,重现下这个bug use test; drop table t1; create table t1(id int auto_increment, ...

  5. 学习笔记13—python DataFrame获取行数、列数、索引及第几行第几列的值

    1. df=DataFrame([{‘A’:’11’,’B’:’12’},{‘A’:’111’,’B’:’121’},{‘A’:’1111’,’B’:’1211’}]) print df.column ...

  6. excel查找某一列的值在、不在另一列中

    统计中遇到找出一列的值不在另一列的需求: 找出A列中不在B列的值 方法如下: 使用countif函数 比如找出A列中不在B列的值: 在C1中输入 COUNTIF(B:B,A1) 下拉单元格,在首行添加 ...

  7. 如何取得GridView被隐藏列的值

    如何取得GridView被隐藏列的值         分类:             ASP.net              2009-06-25 12:47     943人阅读     评论(1 ...

  8. MySQL 批量修改某一列的值为另外一个字段的值

    mysql> select * from fruit; +----+--------+-------+ | id | name | price | +----+--------+-------+ ...

  9. mysql合并同一列的值

      我有例如以下的查询条件显示: 我希望终于显示的效果如图: 将id同样的group_name合并到一行.实现方法:在group_name前面加keywordgroup_concat.然后在sql语句 ...

  10. 【拼接属性查询方式】MySql某一列属性值为拼接时的查询方式

    数据库中某一列的值为 使用IN查询是无法查询到数据的,只能查询到IN(2)或者IN(2,3)  查询结果: , style_id) 正确方式:使用FIND_IN_SET函数 , style_id) , ...

随机推荐

  1. etcd 基于ubuntu 20.04 部署集群

    Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息,K8S中所有持久化的状态信息都是以Key-Value的形式存储在etcd中,提供分布式协调服务.之 ...

  2. lua中定义变量用and和or连接

    原文链接 最近在写代码中看到lua定义变量有local a = value1 and value2的操作,有些疑问,在此记录一下:当连接两个操作数时,1.对于运算符and,假设它的第一个操作数为假,就 ...

  3. 根据指定月份,打印该月份所属的季节。 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 if和switch各写一版

    1.public class Month{ public static void main(String args[]){ for (int i = 1;i <= 12 ;i++ ) { if ...

  4. 数据库MYSQL常用命令

    下载安装命令 Sudo atp-get install xxxx 验证是否安装并启动成功 Sudo netstat -tap | grep xxx 启动 Sudo service mysql star ...

  5. Linux定时运行Python代码

    背景 之前定时运行py文件都是jenkins设置定时任务运行,今天想linux有没有定时运行的东西,百度一下找到了,链接:http://blog.csdn.net/netdxy/article/det ...

  6. Windows系统更改/迁移用户目录

    系统盘为C盘,C盘空间不足,C盘太满了,C盘清理时查看发现C:\Users目录占用几十个GB,以下方法可将Users目录大部分空间转移. 1. 准备工作 更改/迁移用户目录之前先自行备份当前用户的资料 ...

  7. 记录搜索的例子 浙大c

    #include <stdio.h> struct{ int amount; char *name; } coins[] = { {1, "penny"}, {5, & ...

  8. linux 离线安装mysql 配置开机自启动

    系统版本:centos7.8 | mysql版本:5.7.35 安装配置mysql数据库 mysql数据库配置开机自启动 1. 安装配置mysql数据库 mysql版本:5.7.35 点击下载 提取码 ...

  9. pt-table-check和pt-table-sync实践

    如果主库使用非默认端口,--recursion-method默认值为hosts,这时如果从库没有配置report_host参数(注意该参数缺点),则pt-table-checksum无法自动检测到从库 ...

  10. mybatis框架的连表查询one2one

    mybatis 的连表查询one2one 1.可以通过主从表之间的关联查询通过主键两次 在resultMap映射中的association标签<association property=&quo ...