日常超实用技巧(一)

目录

场景说明

mysql解决

excel解决

vscode插件解决

notepad++解决

扩展解决

正则解决

自动录制宏解决 


场景说明

平常在开发中有时会遇到一些字符串的规整或者格式化的操作,这点在操作数据库时经常常见,但是有的时候却有这种需求,就是我们的修改条件是某个查询条件的字查询,此时mysql的update的where的子查询的书写有时会比较麻烦  博主最近就遇到这种比较恶心的情况 特此记录下

举例说明;

此时遇到的场景就是,将这条查询语句查询出来的数据的某一列数据调整为其他的值,这里比如将clue_name的值全部改成 "暗武逢天",我们可以先调整这条sql只查询id主键列,然后使用update语句时直接where id in这种写法,看看会有什么问题

 书写update语句

 可以看到虽然修改成功了,但是子查询语句书写确实非常的繁琐,其实完全可以换个思路,直接将我们前面的查询语句查询出来的id列拼接出来成 where id in ('值1','值2','值3'....) 的这种形式,而括号里面就是单引号加逗号分割的形式进行的,这样的话update语句的where 条件就只会是一个in条件

mysql解决

其实mysql自身就有一个可以将多行进行拼接的方法可以使用

MySQL中,聚合函数GROUP_CONCAT()用指定分隔符连接字符串。
通常使用
多行变一列:【语法:group_concat(列名或与其他字符拼接 Separator ‘分隔符’)】
扩展一下:多行变多列(不使用该聚合函数)

举例使用:

这里在写的时候注意要使用  \ 对 单引号进行转义 可以看到拼接的结果,我这里直接将结果贴在下面

'4059','5146','5287','6135','6480','6983','7988','8264','8628','8919','8920','8965','9310','9326','10369','10426','10429','10434','10435','10438','10439','10463','10657','10844','11071','11084','11128','11171','11173','11227','11329','11424','11541','12047','12303','12415','12432','12507','12545','12598','12673','12693','12720','12849','13169','13186','13643','13790','13987','13992','14129','14155','14274','14515','14516','14561','14674','14697','14713','14955','15125','15134','15169','15348','15398','15448','15470','15490','15505','15605','15618','15634','15675','15696','15717','15755','15789','15822','15977','15986','16031','16134','16211','16237','16276','16277','16325','16328','16332','16389','16405','16520','16590','16807','16861','16930','16974','16986','16987','17077','17117','17125','17184','17299','17305','17335','17352','17388','17391','17449','17494','17518','17582','17655','17656','17741','17931','17990','17991','18012','18206','18296','18310','18363','18396','18397','18398','18399','18401','18403 

可以看到,将之前id列进行了单引号加逗号的拼接 ,我们在使用的时候只需要注意结尾可能会多个逗号或者少个单引号,手动加下就可以了,然后可以直接将这些拼接好的字符串直接放在update语句的in语句里还是比较方便的

但是这个函数也是有一些问题的,就是mysql是有默认的长度限制的,可以很明显看到前面贫瘠的字符串长度根本达不到之前我写sql的数量

我这条sql查询出的id列是2190行,那么拼接的字符串也应该有2190左右个逗号或者2190*2左右个的单引号数量才对 ,我们这里只计数逗号的数量试试看

只有129个逗号,相当于只拼接了129左右的个id行  那是因为mysql默认的 group_concat函数长度限制是1024个字符

改变方法(两种):

1、修改MySQL的配置文件:
group_concat_max_len = 10240000,需要重启数据库才能生效

2、也可以使用sql语句设置:
SET GLOBAL group_concat_max_len=10240000;

SET SESSION group_concat_max_len=10240000;

执行后对新建的连接生效,但如果数据库重启,参数会恢复1024(如果mysql配置文件没改)。所以在不方便重启数据库而使用这种方法的情况下,最好记得修改数据库配置文件,以免重启数据库设置好的参数失效。

可以看到这种方式虽然可以解决update的in 子查询语句的繁琐,但是在拼接的行数比较多时还需要修改聚合函数的一些配置  在行数比较少的情况下还是推荐使用的

excel解决

也可以使用excel来解决列的拼接问题,并且excel不用像mysql本身一样担心长度的限制

首先我们先将查询到的id列进行导出或者复制到一个excel中

可以看到长度也是比较多的

 函数书写

="'"&A1&"',"

书写后直接回车

 

此时可以看到C1值已经成为我们想要的单引号加逗号分割的形式

而其他列就不需要再一个一个书写了,直接拖动C1单元格的右下角,将其拖动到该excel的最后一行需要拼接的位置即可  动图展示:

 然后选中该列进行复制到文本中再次计算逗号数量

可以看到复制后还是比较规整的换行排列了,计数也是2190个逗号,符合预期,也没有长度限制,可以直接将这拼接好的放到update的in语句中,注意删掉最后的多余逗号

这种方法可以很方便地进行我们需要的拼接,但是也有一个问题就是我们需要手动拖动第一行写好的函数格式到最后一行,当拼接的行数上万或者几十万几百万时这也是比较可怕的一个方法,当然这种情况还是比较少见的

vscode插件解决

 在vscode中也有一些非常方便的第三方插件可以帮助我们解决这些问题

这里介绍一个博主常用的插件

输入vscode快捷键ctrl+shit+p,召唤出命令面板

 

输入符号后回车 

可以看到字符都以双引号包裹且自动逗号分割,最神奇的是最后一个还没有多余出来的逗号 ,太amazing了

再以单引号为例

 非常nice,进行逗号计数

可以看到没了最后的逗号,非常nice  非常推荐使用该插件,当然该操作也可以配置相应的快捷键来进行快捷操作

notepad++解决

也可以直接使用常用的文本编辑器nodepad++解决

扩展解决

 可以发现每行开头都加了 一个左边的单引号

那么现在还差的就是右边的单引号和逗号

直接使用ctrl+f的替换功能 

转换后的效果

 需要注意的是这里转换的最后和excel以及mysql不同,不是多了单引号或逗号,这里是少个单引号,也需要手动加下,而且也没有长度限制

正则解决

也可以使用notepad++的正则来解决

替换后效果

也是左边单引号有了,还差右边单引号和逗号

再次正则替换,这次替换每行结尾

 替换后效果

可以看到正则也可以规整解决

自动录制宏解决 

还可以使用notepad++的录制宏解决,但是这个录制宏可以和前面两个结合,简单来说就是将前面两个的操作录制下来成为一个模板,以后再用时可以直接套用

准备数据

点击录制宏

将光标放在第一行的首位字符前,Ctrl+F 组合键调出弹框,选择“替换”,查找模式选择“正则表达式 ”,输入如下图内容后,点击“全部替换”

 此时不关闭弹框。将光标放在第一行的末位字符后,输入如下图内容后,点击“全部替换”

输入如下图内容后,点击“全部替换”按钮去掉字符串末尾的换行符(如果需要)

 关闭弹框。按住Ctrl+end键,定位到末尾字符,删掉最后的逗号

点击宏,点击“停止录制按钮”。再点击“保存录制宏”按钮,之后就可以在这里点击保存过的宏来处理数据了。单引号是一样的操作方法,只需要修改标点符号。

 

 

直接完成,非常nice 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/450667.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第三方软件测评机构出具软件测试报告的流程简析

第三方软件测评机构是独立于软件开发方和需求方的第三者机构,负责对软件进行全面的评估和测试。独立存在使得出具的测试结果会更客观公正。相比之下,软件开发方进行的测评工作往往存在着主观性和局限性,很难全面评估软件的各个方面。 第三方…

Linux操作系统-06-进程与服务管理

使用ps命令查看进程。包括过滤进程信息 使用systemctl命令管理和运行Linux服务 进程(Process):操作系统正在运行的应用程序。任意一个进程,都会消耗CPU和内存资源, 服务(Service)&#xff1a…

C# Onnx C2PNet 图像去雾 室外场景

目录 介绍 效果 模型信息 项目 代码 下载 C# Onnx C2PNet 图像去雾 室外场景 介绍 github地址:https://github.com/YuZheng9/C2PNet [CVPR 2023] Curricular Contrastive Regularization for Physics-aware Single Image Dehazing 效果 模型信息 Model P…

Docker安装Prometheus监控

环境初始化 关闭防火墙 setenforce 0 vim /etc/selinux/config ##################内部代码################### SELINUXdisabled #关闭防火墙 ############################################ 安装docker #卸载yum源之前的docker安装包 sudo yum remove docker docker-clie…

打算考PMP,需要准备什么?

PMP是什么考试?是PMI设立的项目管理资格认证考试,旨在评估和确认候选人是否具备在各种项目环境中领导和管理项目的能力。 pmp考试不算简单,考前也需要更详细的了解考试情况才能更好的备考。文章不是很长,主要是可以让你快速的了解…

TSINGSEE青犀视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展,人工智能(AI)已经逐渐渗透到我们生活的各个领域,从智能家居到自动驾驶,从医疗诊断到金融风控,AI的应用正在改变着我们的生活方式。而数据、算法和算力,正是构成…

IntelliJ IDEA Dev 容器

​一、dev 容器 开发容器(dev 容器)是一个 Docker 容器,配置为用作功能齐全的开发环境。 IntelliJ IDEA 允许您使用此类容器来编辑、构建和运行您的项目。 IntelliJ IDEA 还支持多个容器连接,这些连接可以使用 Docker Compose …

3588板子部署yoloV5

一 :准备 ubuntu linux X86_64系统 a.安装anaconda b.创建虚拟环境 python3.8 二: 下载rknn-toolkit2 传送门 unzip 解压文件夹 三:pt转onnx模型 四:onnx转rknn模型 a:cd到rknn-toolkit2-master/rknn-toolkit2/packag…

C++学习笔记:红黑树

红黑树 什么是红黑树红黑树的规则红黑树节点的定义红黑树的插入空树插入非空插入条件判断新插入的节点 cur 不为 root 且 parent->_col 为红就需要调整父节点为左 grandf->left parent当uncle节点为红色时,只需要进行颜色调整,即可当uncle为空 或 者存在但是为黑parent …

cnetos7 清理 journal 日志

journal 日志如果长时间不清理,会占用系统很多空间,所有需要清理占用过多的一些日志。 1、查看journal日志当前使用情况,包括占用的磁盘空间、日志数量 journalctl --disk-usage 2、清除 journal 日志中超过 100MB 大小的内容 journalctl -…

Lord 3DMCV7-AHRS 时间同步硬件触发设置

目的:通过FPGA发送脉冲触发IMU采集数据。FPGA发送脉冲时,IMU才有数据产生。 FPGA与IMU的硬件接线就不讲了,这里主要说明的是IMU的设置以及ROS驱动的config文件更改。 1. WIN上位机设置 通过IMU在WINDOWS的上位机SensorConnect对IMU的GPIO、波特率等基本功能进行设值,具体…

项目解决方案:视频监控接入和录像系统设计方案(下)

目 录 1.概述 2. 建设目标及需求 2.1建设总目标 2.2 需求描述 ​2.3 需求分析 3.设计依据与设计原则 3.1设计依据 3.2 设计原则 4.建设方案设计 4.1系统方案设计 4.2组网说明 5.产品介绍 5.1视频监控综合资源管理平台介绍 5.2视频录像服务器和存储 5.2.…

SpringController返回值和异常自动包装

今天遇到一个需求,在不改动原系统代码的情况下。将Controller的返回值和异常包装到一个统一的返回对象中去。 例如原系统的接口 public String myIp(ApiIgnore HttpServletRequest request);返回的只是一个IP字符串"0:0:0:0:0:0:0:1",目前接口…

Django入门 整体流程跑通

Django学习笔记 一、Django整体流程跑通 1.1安装 pip install django //安装 import django //在python环境中导入django django.get_version() //获取版本号,如果能获取到,说明安装成功Django目录结构 Python310-Scripts\django-admi…

噬菌体展示文库类型与应用-卡梅德生物

噬菌体展示抗体库构建的途径:目前主要有两种:一是有机合成法,二是基因合成法。前者是直接合成含有各种可能序列的短肽,构建至噬菌体载体。基因工程方法是将目的基因构建至载体,与噬菌体的pⅢ外壳蛋白融合表达。 卡梅德…

数据结构——堆的应用 堆排序详解

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

制造业工厂的设备管理系统

对企业来说,时间就是金钱,所有企业都在极力避免因生产延误而导致的金钱损失。在设备保养、设备维护和设备运行方面更是如此。如果工厂的设备因突发故障处于长时间停机状态,但没能被及时解决,工厂所需支付的成本可能就会螺旋式上升…

11、设计模式之享元模式(Flyweight)

一、什么是享元模式 享元模式是一种结构型的设计模式。它的主要目的是通过共享对象来减少系统种对象的数量,其本质就是缓存共享对象,降低内存消耗。 享元模式将需要重复使用的对象分为两个部分:内部状态和外部状态。 内部状态是不会变化的&…

基于java+springboot+mybatis+laiyu实现学科竞赛管理系统

基于javaspringbootmybatislaiyu实现学科竞赛管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获…

UI学习 一 可访问性 基础

教程:Accessibility – Material Design 3 需要科学上网,否则图片显示不出来。设计教程没有图片说明,不容易理解。 优化UI方向 清晰可见的元素足够的对比度和尺寸重要性的明确等级一眼就能辨别的关键信息 传达某一事物的相对重要性 将重…