mysql 字符串去重

        

        把“aa,bb,cc,dd,aa,bb,cc,dd” 字符串中重复的内容去除。 还是用截取的方式,一个一个截取,然后进行拼接,拼接前用find_in_set函数来判断,是否已经存在? 如果不存在,进行拼接,存在就忽略,继续往下查找。

函数:

ROP PROCEDURE IF EXISTS func_remove_duplicates;DELIMITER $$CREATE  FUNCTION  func_remove_duplicates(inputString VARCHAR(4000))
RETURNS VARCHAR(4000)
BEGINDECLARE startPos INT;DECLARE endPos INT;DECLARE element VARCHAR(255);DECLARE outputString VARCHAR(4000) DEFAULT ''; SET outputString  = SUBSTRING_INDEX(inputString, ',', 1);	-- 遍历字符串中的每个元素string_loop: LOOP-- 查找下一个逗号的位置SET startPos = IFNULL(LOCATE(',', inputString), 0);-- 如果找不到逗号,说明已经到了最后一个元素IF startPos = 0 THENSET element = inputString;ELSESET element = SUBSTRING(inputString, 1, startPos - 1);END IF;-- 添加元素到输出字符串,如果元素不在输出字符串中IF FIND_IN_SET(element, outputString) = 0 THENSET outputString = CONCAT(outputString, ',', element);END IF;-- 如果已经到达字符串末尾,则退出循环IF startPos = 0 THENLEAVE string_loop;END IF;-- 剔除已处理的元素并继续下一个迭代SET endPos = LENGTH(inputString);SET inputString = SUBSTRING(inputString, startPos + 1, endPos); END LOOP;RETURN outputString;
END$$DELIMITER ;

调用:

SELECT func_remove_duplicates('aa,bb,cc,dd,aa,bb,cc,dd');

过程:

ROP PROCEDURE IF EXISTS pro_remove_duplicates;DELIMITER $$CREATE   PROCEDURE pro_remove_duplicates(inputString VARCHAR(255), OUT outputString VARCHAR(255))
BEGINDECLARE startPos INT;DECLARE endPos INT;DECLARE element VARCHAR(255);-- 初始化 outputStringSET outputString = SUBSTRING_INDEX(inputString, ',', 1);	-- 遍历字符串中的每个元素string_loop: LOOP-- 查找下一个逗号的位置SET startPos = IFNULL(LOCATE(',', inputString), 0);-- 如果找不到逗号,说明已经到了最后一个元素IF startPos = 0 THENSET element = inputString;ELSESET element = SUBSTRING(inputString, 1, startPos - 1);END IF;-- 添加元素到输出字符串,如果元素不在输出字符串中IF FIND_IN_SET(element, outputString) = 0 THENSET outputString = CONCAT(outputString, ',', element);END IF;-- 如果已经到达字符串末尾,则退出循环IF startPos = 0 THENLEAVE string_loop;END IF;-- 剔除已处理的元素并继续下一个迭代SET endPos = LENGTH(inputString);SET inputString = SUBSTRING(inputString, startPos + 1, endPos); END LOOP;-- 输出内容SELECT outputString;
END$$DELIMITER ;

   调用:

 CALL pro_remove_duplicates('aa,bb,cc,dd,aa,bb,cc,dd', @result);

总结:

        mysql字符串去重,一般都是程序那边处理,很少sql去处理,如果是mysql事件里面调用,就用过程去处理。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

场景文本检测识别学习 day06(Vi-Transformer论文精读)

Vi-Transformer论文精读 在NLP领域,基于注意力的Transformer模型使用的非常广泛,但是在计算机视觉领域,注意力更多是和CNN一起使用,或者是单纯将CNN的卷积替换成注意力,但是整体的CNN 架构没有发生改变VIT说明&#x…

Jupyter Notebook 中使用虚拟环境的Python解释器

问题:创建虚拟环境,在pycharm中配置虚拟环境的Python解释器,然后在pycharm中打开ipynb,执行发现缺少包,但是虚拟环境中已经安装了 解决方式: 配置Jupyter Notebook 使用虚拟环境的Python解释器 1&#x…

JWT是什么?如何使用?

JWT是什么?如何使用? 前言什么是JWT?概念工作方式JWT的组成HeaderPayloadSignatrue 实战引入依赖自定义注解定义实体类定义一个JWT工具类业务校验并生成token定义拦截器配置拦截器定义接口方法并添加注解开始验证 使用场景注意事项 JWT与传统…

用大模型生成带文字的海报

本文代码讲整合在: GitHub - liangwq/Chatglm_lora_multi-gpu: chatglm多gpu用deepspeed和 这篇文章介绍如何利用VLMdiffusion模型来搭建一条文本生成海报的链路。搭建这条链路有两个应用:1.实际的业务中需要批量生产文字图海报可以用,2.可以…

生成式人工智能(AIGC)教学解决方案

一、前言 近年来,伴随计算能力跃升和数据量指数级增长,以多模态巨型模型为典型代表的生成式AI技术,在全球范围内引起了广泛关注与热烈追捧。在教育、医疗、法律等众多专业领域,生成式人工智能技术的影响力日益凸显,尤…

C++11 设计模式5. 原型模式

什么是原型模式? 原型模式⼀种创建型设计模式,该模式的核⼼思想是基于现有的对象创建新的对象,⽽不是从头开始创建。在原型模式中,通常有⼀个原型对象,它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状态来…

24.什么是跨域?解决方案有哪些?

为什么会出现跨域问题 存在浏览器同源策略,所以才会有跨域问题。那么浏览器是出于何种原因会有跨域的限制呢。其实不难想到,跨域限制主要的目的就是为了用户的上网安全。 同源策略导致的跨域是浏览器单方面拒绝响应数据,服务器端是处理完毕…

opencv基础篇 ——(十)非真实感渲染

非真实感渲染(Non-Photorealistic Rendering, NPR)是指通过一系列图像处理技术,将真实感图像转换为具有特定艺术风格或视觉效果的图像,模拟绘画、素描、卡通等非现实主义表现手法。OpenCV 提供了一些内置函数来实现非真实感渲染&a…

2024最新的,免费的 ChatGPT 网站AI(八个)

ChatGPT是美国人工智能研究实验室OpenAI在2022年11月推出的一款人工智能技术驱动的语言模型应用。它基于GPT-3.5架构(后续还有GPT-4架构的升级版)构建,拥有强大的自然语言处理能力和上下文理解能力,能够参与多轮对话,为…

Python_GUI工具包 PyQt 与 Pyside6的介绍

Python_GUI工具包 PyQt 与 Pyside6的介绍 一、简介 在Python的GUI(图形用户界面)开发领域,PyQt和PySide6是两个非常重要的工具包。它们都基于Qt库,为Python开发者提供了丰富的GUI组件和强大的功能。当然Python也有一些其他的GU…

Halcon 检测物体定位点

文章目录 get_domain 返回所有输入图像的定义域作为一个区域add_channels 给区域增加灰度值find_shape_model 发现匹配模板find_shape_models 发现最佳模板示例 get_domain 返回所有输入图像的定义域作为一个区域 Halcon 中的区域 get_domain(Image : Domain : : ) Image : …

SpringBoot之自定义注解参数校验

SpringBoot之自定义注解参数校验 为什么要自定义注解 我这里先引入一个例子,就比如我现在要写文章,文章也许写完正要发布,也可以是还没写完正要存草稿,前端往后端发送数据,如果前端的state不是草稿或者已发布状态&…

大模型应用开发极简入门

简单的归纳一下书的前序部分 目录 LLM(Large Language Model)的应用技术栈通常包括以下几个方面: 深度学习框架: 数据预处理工具: 训练资源: 模型优化和调参工具: 部署和应用集成&#xf…

智慧图书管理|基于SSM+vue的网上服装商城系统(源码+数据库+文档)

智慧图书管理目录 基于SSMvue的网上服装商城系统 一、前言 二、系统设计 三、系统功能设计 1.1 服装列表 1.2 公告信息管理 1.3 公告类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff1…

linus下Anaconda创建虚拟环境pytorch

一、虚拟环境 1.创建 输入下面命令 conda create -n env_name python3.8 输入y 2.激活环境 输入 conda activate env_name 二、一些常用的命令 在Linux的控制平台 切换到当前的文件夹 cd /根目录/次目录 查看conda目录 conda list 查看pip目录 pip list查看历史命…

Python 爬虫如何配置代理 IP (Py 采集)

在Python中配置代理IP,可以通过设置requests库的proxies参数来实现。以下是一个示例: import requests# 则立可以获取稳定代理Ip:https://www.kuaidaili.com/?refrg3jlsko0ymg # 推荐使用私密动态 IP proxies {"http": "ht…

芒果超媒财报解读:科技加持下,如何蜕变为内容“全科生”?

在降本增效和内容为王的基调下,国内头部长视频平台正在拥抱增长。 爱奇艺率先公布2023年财务数据,实现归母净利润19.25亿元,与2022年亏损1.36亿元相比,扭亏为盈且增幅显著。 而近日,随着新一季《浪姐》播出&#xff…

JAVA面试题分享---多线程与线程池

多线程 什么是线程?线程和进程的区别?(了解) 线程:是进程的一个实体,是 cpu 调度和分派的基本单位,是比进程更小的 可以独立运行的基本单位。 进程:具有一定独立功能的程序关于某个数据集合上的一次运…

【漏洞复现】IP-guard WebServer 权限绕过漏洞

0x01 产品简介 IP-guard WebServer 是 IP-guard 网络安全管理系统的一部分,用于提供 Web 界面以进行用户权限管理、监控和审计。 0x02 漏洞概述 IP-guard WebServer的权限验证机制中存在设计缺陷,未授权的攻击者能够规避安全验证,通过后端接口执行文件的任意读取和删除操…

DaVinci Resolve Studio 19(达芬奇19调色剪辑)win/mac激活版

DaVinci Resolve Studio是一个结合专业的8k 编辑,颜色混合,视觉效果和音频后期制作的软件。只需点击一下,你就可以立即在编辑、混音、特效和音频流之间切换。此外,达芬奇解决(达芬奇)是一个多用户协作的解决方案,使编辑…