mysql的窗口函数,substring()函数,Locate()函数,Replace()函数

MySQL中LOCATE()函数的5个实用场景解析 本文深入解析MySQL中LOCATE()函数的5个实用场景,从基础字符串定位到高级多子串查找技巧。通过实际案例展示如何高效处理大小写敏感、指定位置搜索等问题,并分享与SUBSTRING、REPLACE等函数的组合用法,帮助开发者提升数据库文本处理能力。 阅读详情
AI摘要

本文记录了MySQL窗口函数语法,还介绍了Locate()、substring()、replace()函数。Locate()用于返回字符串位置,substring()可截取字符串,replace()能进行字符串替换,还说明了replace()函数在Query语句、update语句及插入或替换场景中的使用方法和注意事项。

记录贴,记录一下mysql窗口函数语法。

Locate()

语法1:①.LOCATE(字符串1,字符串2)。

 返回字符串1在字符串2中第一次出现的位置,只要字符串2中包含字符串1,那么返回值必然大于0。

语法2:②.LOCATE(字符串1,字符串2,pos)

返回字符串1在字符串2中第一次出现的位置,从位置pos开始算起;

如果返回0,表示从pos位置开始之后没有了

如果返回值 大于0,表示有

出处:MySQL中LOCATE()函数的详解_locate函数-优快云博客

mysql substring()函数:截取字符串

SUBSTRING 是字符串处理函数,语法1为“SUBSTRING(字符串,n)。

substring()函数可以从字符串从特定位置开始截取一个给定长度的子字符串并返回。

                                                    语法2:SUBSTRING(s,n,len)。

从字符串 s 返回一个长度同 len 字符相同的子字符串,起始于位置 n。

  • n参数是一个整数,用于指定子串的起始字符,n可以是负值。

    如果n为正值,则SUBSTRING函数从字符串的开始处提取子字符串。请参阅以下字符串。

    mysql substring()函数如何用

    如果n为负值,则子字符串的位置起始于字符串结尾的第 n 个字符,即倒数第 n 个字符,而不是字符串的开头位置。

  • len参数可省略,指定子串长度

  • 请注意,如果n参数为零,则SUBSTRING函数返回一个空字符串:

substring()函数使用示例

1、len参数省略

从“MySQL SUBSTRING”字符串中获取子字符串:“SUBSTRING”,子串的位置必须从7开始

mysql> SELECT SUBSTRING('MYSQL SUBSTRING', 7);

mysql substring()函数如何用

请注意,如果n参数为零,则SUBSTRING函数返回一个空字符串:

mysql> SELECT SUBSTRING('MYSQL SUBSTRING', 0);

mysql substring()函数如何用

mysql> SELECT SUBSTRING('MySQL SUBSTRING', -10);

mysql substring()函数如何用

2、len参数不省略

mysql> SELECT SUBSTRING('MySQL SUBSTRING',1,5);

mysql substring()函数如何用

原文出处:mysql substring()函数如何用 • Worktile社区

mysql replace()函数

REPLACE语法

REPLACE(String,from_str,to_str)

即:将String中所有出现的from_str替换为to_str,这里的from_str不支持正则匹配。

REPLACE语法
REPLACE(String,from_str,to_str)

即:将String中所有出现的from_str替换为to_str,这里的from_str不支持正则匹配。

操作实例
测试表数据如下:

 

mysql> select * from `LOL`;
+----+----------------+--------------+-------+
| id | hero_title     | hero_name    | price |
+----+----------------+--------------+-------+
|  1 | 刀锋之影       | 泰隆         |  6300 |
|  2 | 迅捷斥候       | 提莫         |  6300 |
|  3 | 光辉女郎AA     | 拉克丝       |  1350 |
|  4 | 发条A魔灵A     | 奥莉安娜     |  6300 |
|  5 | 至高之拳       | 李青         |  6300 |
|  6 | 无极剑圣       | 易           |   450 |
|  7 | 疾风剑豪       | 亚索         |  6300 |
+----+----------------+--------------+-------+
7 rows in set (0.00 sec)


使用场景1 – (Query语句):
需求:把"hero_title"字段中所有的"之"换成" - "来展示,SQL如下:

 

mysql> SELECT REPLACE(hero_title,'之',' - ') as repl_title,hero_name,price from `LOL`;
+----------------+--------------+-------+
| repl_title     | hero_name    | price |
+----------------+--------------+-------+
| 刀锋 - 影      | 泰隆         |  6300 |
| 迅捷斥候       | 提莫         |  6300 |
| 光辉女郎AA     | 拉克丝       |  1350 |
| 发条A魔灵A     | 奥莉安娜     |  6300 |
| 至高 - 拳      | 李青         |  6300 |
| 无极剑圣       | 易           |   450 |
| 疾风剑豪       | 亚索         |  6300 |
+----------------+--------------+-------+
7 rows in set (0.00 sec)

使用场景2 – (update语句):

需求:把"hero_title"字段中所有的"A"去掉,SQL如下:

UPDATE LOL SET hero_title=REPLACE(hero_title,‘A’,’’);

mysql> UPDATE `LOL` SET hero_title=REPLACE(hero_title,'A','');
Query OK, 2 rows affected (0.05 sec)
Rows matched: 7  Changed: 2  Warnings: 0
-- 去掉后在查询:
+----+--------------+--------------+-------+
| id | hero_title   | hero_name    | price |
+----+--------------+--------------+-------+
|  1 | 刀锋之影     | 泰隆         |  6300 |
|  2 | 迅捷斥候     | 提莫         |  6300 |
|  3 | 光辉女郎     | 拉克丝       |  1350 |
|  4 | 发条魔灵     | 奥莉安娜     |  6300 |
|  5 | 至高之拳     | 李青         |  6300 |
|  6 | 无极剑圣     | 易           |   450 |
|  7 | 疾风剑豪     | 亚索         |  6300 |
+----+--------------+--------------+-------+
7 rows in set (0.00 sec)

使用场景3 – (插入或替换:REPLACE INTO)
  如果我们想插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。

需求场景:
  这张表存的每个客户最近一次交易订单信息,要求保证单个用户数据不重复录入,且执行效率最高,与数据库交互最少,支撑数据库的高可用。
  此时,可以使用"REPLACE INTO"语句,这样就不必先查询,再决定是否先删除再插入。

"REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
"REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
"REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。

注意事项:如下SQL所示,需要在username字段上建立唯一索引(Unique),transId设置自增即可。

   

-- 20点充值
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
   VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '会员充值');
 
-- 21点买皮肤
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
   VALUES (null, 'chenhaha', 100, '2020-06-11 21:00:00', '购买盲僧至高之拳皮肤');

   
  若username='chenhaha’的记录不存在,REPLACE语句将插入新记录(首次充值),否则,当前username='chenhaha’的记录将被删除,然后再插入新记录。

  id不要给具体值,不然会影响SQL执行,业务有特殊需求除外。

原文路径:MySQL:replace函数的几种实用场景_mysql replace-优快云博客

locate() 在MySQL中的用法 是一个字符串函数,用于返回一个子字符串在另一个字符串中第一次出现的位置。如果子字符串不存在,则返回0。函数在处理字符串查找时非常有用,尤其是在需要确定特定子字符串在字符串中的位置时。这将返回7,因为从第5个字符开始搜索,中的位置是1,从位置1开始搜索。中第一次出现的位置是4。,第一次出现的位置是4。中第一次出现的位置是4。第一次出现的位置是7。 阅读详情

相关推荐

Mysql数据库insert、replace、update、delete、truncate、drop、select语句介绍

Mysql数据库insert、replace、update、delete、truncate、drop、select语句介绍

树下一少年的博客 9966

详细分析Mysql中的LOCATE函数(附Demo)

LOCATE()函数在SQL中用于在字符串中查找子字符串的位置

码农研究僧的博客 2万+

别再逐字查询了!用MySQL的LOCATE()函数提升字符串搜索效率的3种高级用法

本文深入解析了MySQL的LOCATE()函数在字符串搜索中的三种高级用法,帮助开发者超越低效的LIKE操作。通过嵌套定位解析复杂结构、基于位置进行多条件联合筛选以及在UPDATE中实现智能替换,LOCATE()函数能显著提升海量文本数据的查询与处理效率,是数据库性能优化的利器。

weixin_29221753的博客 286

MySQL函数Locate的使用

Locate函数主要的作用是判断一个字符串是否包含另一个字符串,如 Locate(str,sub) > 0,表示sub字符串包含str字符串; Locate(str,sub) = 0,表示sub字符串不包含str字符串。 该函数常常与<![CDATA[]]> 组件一起使用,该组件作用是防止字符串进行转义。比如: select * from stu s where <![CDATA[Locate(#{name},s.name)>0]]> mysql的instr函

努力改变人生 3万+

SQL REPLACE() 函数原理与安全使用指南

REPLACE() 是 SQL 中最基础却最易误用的字符串处理函数,其本质是字面量级、无状态、前向扫描的确定性替换,而非智能文本编辑。理解其 O(n) 线性性能、无回溯机制和严格幂等性要求,是避免生产事故的关键。它适用于高频、固定、无歧义的批量清洗场景,如日志标准化、字段分隔符统一或字符集乱码应急修复;但在需边界控制、语义识别或条件判断时,必须转向 REGEXP_REPLACE 或应用层处理。本文结合原子性、幂等性、可逆性三角模型,详解 REPLACE() 在真实数据治理中的安全设计逻辑与避坑实践。

weixin_33767813的博客 540

MySQL编程进阶之:字符串操作函数:`CONCAT()`、`SUBSTRING()`、`REPLACE()`等的链式调用。

所以,在性能敏感的场景下,要仔细评估链式调用的性能,并考虑使用其他更高效的方法。所以,要适度使用,尽量保持代码的可读性。因为这玩意用好了,代码简洁高效,用不好,那就是一团浆糊,自己都看不懂。所以,在编写链式调用时,要确保使用的函数在目标MySQL版本中是兼容的。这就是链式调用的基本思想:把一个函数的结果作为另一个函数的输入,像流水线一样,一步一步地处理数据。在开始链式调用之前,咱们先简单回顾一下几个常用的字符串操作函数,这是基础,基础不牢,地动山摇。有时候,我们需要根据不同的条件,对字符串进行不同的处理。

weixin_41455464的博客 833

mySQL重要函数操作

1、LOCATE(substr , str ):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0; 2、POSITION(substr IN str ):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,与LOCATE函数作用相同; 3、LEFT(str, length):从左边开始截取str,length是截取的长度; 4、RIGHT(str, length):从右边开始截取s

vca821_opa847的博客 947

MySQL使用内置函数来进行模糊搜索(locate()等

MySQL使用内置函数来进行模糊搜索(locate()等) 常用的一共有4个方法,如下: 1. 使用locate()方法 1.1.普通用法: SELECT `column` from `table` where locate('keyword', `condition`)>0 类似于 java 的 indexOf();不过 locate() 只要找到返回的结果都大于0(即使是查询的内容就是最开始部分),没有查找到才返回0; ...

mws666的博客 1368

MySQL字符串的拼接、截取、替换、查找位置

MySQL字符串的拼接、截取、替换、查找位置。 常用的字符串函数: 函数 说明 CONCAT(s1,s2,...) 返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL。 CONCAT_WS(x,s1,s2,...) 返回多个字符串拼接之后的字符串,每个字符串之间有一个x。 SUBSTRING(s,n,len)、MID(s,n,l...

pan_junbiao的博客 23万+

视觉语言模型对抗攻击与防御:从传统方法到多模态挑战

本文深入探讨了视觉语言模型(VLM)面临的对抗攻击与防御挑战,从传统单模态攻击到多模态威胁的演进。分析了包括FGSM、PGD等经典攻击方法,以及新兴的多模态攻击如跨模态对抗样本和越狱攻击。同时提出了跨模态一致性检查、动态防御机制等创新防御策略,并结合医疗影像诊断等实战案例,为提升AI系统安全性提供了重要见解。

weixin_29231725的博客 393

DirectX修复工具使用技巧之二——手动修复C++创建失败的文件

最后更新:2021-2-25 随着V4.0正式版的发布,近来有部分用户来咨询如何解决C++文件创建失败的问题。在此我将以解决最常见的C++2015-2019文件创建失败为例,向大家演示一下在线修复的方法,其他C++或文件的方法大同小异。此次操作以Windows 7为例,其他系统相应参考即可。 首先,如果希望程序能手动在线修复创建失败的失败,请首先确定您使用的V4.0.2版或更高版本,老版本不支持此功能。查看程序版本的方式可以把鼠标放在DirectX Repair.e...

VBcom的专栏 6万+

MySQL字符函数

以上是一些常用的MySQL字符函数及其用法。通过使用这些函数,我们可以更方便地处理和分析字符串数据。在实际开发中,可以根据需要选择合适的字符函数来解决问题。

weixin_62988359的博客 4786

PostgreSQL和PostGIS安装、导入shp或gdb格式数据至数据库、使用QGIS测试上传PstGIS数据库操作和代码

本文详细介绍了postgresql和postgis安装步骤,并且使用postgis测试上传shp和gdb格式的矢量数据至数据库,包括步骤和代码,并使用qgis连接postgis数据查看数据库里的数据,数据依旧和本地数据一样可查看可编辑,方便后续数据底座开发和服务。

weixin_46456488的博客 1246

MySQL如何替换字符串:REPLACE、UPDATE批量替换、正则替换完整实战

<think>我们根据用户要求,根据所给内容生成≤150字的文章摘要。需要概括主要内容:MySQL字符串替换方法,包括REPLACE函数、截取拼接、正则替换(注意版本),踩坑提示,选型建议。注意字数限制,简明扼要。</think>MySQL字符串替换常用方法:REPLACE()适合固定文本全替换;只替换首处需用SUBSTRING+LOCATE拼接;正则替换需MySQL8.0的REGEXP_REPLACE(),5.7需程序处理。注意先SELECT预览、事务回滚、大表分批更新、区分大小写及NULL陷阱。选型:固

得塔云的博客 581

基于TL431与光耦的电压反馈环路优化设计实战

本文深入探讨了基于TL431与光耦的电压反馈环路优化设计实战。文章从理解这对“黄金搭档”的工作原理入手,详细拆解了电压采样电阻网络、偏置电路、光耦工作点设置以及动态补偿网络的设计心法与计算步骤。重点分享了如何通过RC补偿网络调试,确保环路在各种负载下稳定可靠,并提供了关键的实战避坑指南,帮助工程师解决电源设计中常见的振荡、噪声及可靠性问题。

nginx7reverse的博客 781

NX二次开发 计算多个体的最小包围盒

多个体的最小包围盒

weixin_72680115的博客 430

MySQL字符函数用法合集

MySQL字符函数用法合集

心若有所向往,何惧道阻且长。 1015

Kimodo 入门教程(一)英伟达开源人形机器人动捕数据集训练运动学动作扩散模型

Kimodo是一个基于700小时商用光学动作捕捉数据集训练的运动学动作扩散模型,能够生成高质量的人体和机器人3D动作。该模型支持通过文本提示和多种约束条件(如关键帧、末端执行器位置等)进行控制,并提供数字人类和类人机器人两种模型变体。安装方式包括软件包安装和源代码安装两种,需要配置HuggingFace令牌以访问文本编码器。推荐使用GPU加速,最低需要17GB显存。项目提供命令行生成和交互式演示两种使用方式,演示程序支持时间轴编辑和实时3D可视化。模型分为商用友好版和受限版,其中SMPL-X版本需要额外申请

2506_90492529的博客 1934

mysql字符串函数

文章目录ASCII(str)BIN(N)BIT_LENGTH(str)CHAR(N,... [USING charset_name])16进制CHAR_LENGTH(str)\CHARACTER_LENGTH(str)CONCAT(str1,str2,...)CONCAT_WS(separator,str1,str2,...)ELT(N,str1,str2,str3,...)FIELD(str,s...

whaleluo的博客 3270

ST03N 里看不到 SE38 / SA38?别急,这不是没记录,而是被换了名字

摘要:SAP系统中SE38/SA38事务码在ST03N统计中可能"隐身",因其对话步骤被归集到对应的程序名(如SE38→RSABAPPROGRAM)。ST03N侧重工作负载聚合统计,而STAD提供短期明细记录。正确排查方法是:在ST03N中搜索程序名而非事务码,再通过STAD验证具体使用情况。这一现象在权限整改和审计中易造成误判,建议将程序名纳入常规监控,并区分ST03N(趋势分析)与STAD(事实校验)的不同用途。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 956

BLDC&PMSM电机控制器硬件设计工程(一)概述&需求&规划

这里是一个专注于电机控制器硬件工程的开放社区与知识仓库。我们的核心使命是分享、交流与共创,致力于解开无刷直流电机(BLDC)和永磁同步电机(PMSM)中、大功率控制器硬件设计,包括驱动IC选型,电流传感器选型,控制IC,母线电容计算,功率模块(IGBT、MOS管)选型以及大功率功率模块驱动电源设计。功率等级: 重点关注中等功率(如500W-10kW) 并向大功率(10kW以上) 延伸,探讨对应的功率器件(如MOSFET, IGBT, SiC)选型与驱动。

小幽余生不加糖 639

mysql函数大全及用法(一)字符串函数

MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。 今天主要介绍一下函数: 字符串函数 一、字符串函数 ASCII(str): 返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。 ...

欢迎来到我的博客 339

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MySQL字符常用函数,字符串拼接、截取、替换、查找等

MySQL字符串的拼接、截取、替换、查找位置。 常用的字符串函数: 函数 说明 CONCAT(s1,s2,…) 返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL。 CONCAT_WS(x,s1,s2,…) 返回多个字符串拼接之后的字符串,每个字符串之间有一个x。 SUBSTRING(s,n,len)、MID(s,n,len) 两个函数作用相同,从字符串s中返回...

qq_35238997的博客 490

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SQL 文本函数

SQL文本函数是SQL语言中非常有用的一类函数,它们用于处理和操作字符串数据。在实际应用中,我们经常需要对数据库中的文本数据进行各种操作,比如提取子串、替换子串、拼接字符串等等。而SQL文本函数可以帮助我们轻松地完成这些任务,提高我们的工作效率。目录前言常用简单函数查找子串位置🍁LOCATE()字符串截取🍁LEFT()🍁RIGHT()字符串替换🍁REPLACE()

m0_73070900的博客 1261

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL SUBSTRING极简教程:从零学会字符串截取

最近在整理用户数据时,发现需要从完整字符串中提取特定部分的需求特别常见。作为一个从零开始学SQL的小白,我想分享下这个超实用函数的入门心得。对于需要持续运行的服务,比如数据库查询接口,还可以一键部署成在线API。字符串处理是数据库操作的必备技能,SUBSTRING用熟了能解决80%的截取需求。我经常用它快速测试SUBSTRING的各种用法,不用本地搭环境就能验证想法。想象SUBSTRING是把字符串看作一个蛋糕,你可以指定从哪开始切(起始位置),以及切多长(长度)。常见错误是忘记减1,导致包含@符号。

SilverMoon18的博客 854
上一篇: java工程需要计算农历大年初一
throwsExceptions54
博客等级 码龄5年 24粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值