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…

Openstack: live-migration SRIOV的一个问题(1)

​去年分析的一个问题:Openstack: migration 虚拟机热迁移 失败的注意点。里面有很多未知答案的问题。最近再总结一下,可能会有几篇,算是一个系列。 在这两天又遇到,继续看了一下。找到了之前一直没有搞明白的一个问题&#xff1…

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

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

手写代码题【基础篇】

一.如何实现一个深比较函数 首先,需要明确一点:HTML 是一种用于创建网页的标记语言,它并不适合用来实现复杂的逻辑功能,如深比较函数。深比较函数通常用于比较两个对象的值是否相等,包括它们的属性和嵌套对象。 如果…

JWT是什么?如何使用?

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

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

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

【信息系统项目管理师知识点速记】范围管理:创建WBS

9.6 创建WBS 创建工作分解结构(WBS)是把项目可交付成果和项目工作分解成较小、更易于管理的组件的过程。其主要作用是为所要交付的内容提供架构。这一过程仅在项目的预定义点或仅开展一次。 9.6.1 输入 项目管理计划 范围管理计划:定义了如何根据项目范围说明书创建WBS。项…

C++学习第八课:函数定义使用和它的高级应用

C学习第八课:函数的高级使用 在C中,函数是封装一段代码的单元,使得代码更加模块化、重用性高,并且易于维护。本课我们将介绍如何使用函数组织代码,包括函数原型、定义、调用、参数传递、返回值、默认参数值、递归函数…

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

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

基于SSM的美容院管理系统演示。Javaee项目。ssm项目。

演示视频: 基于SSM的美容院管理系统演示。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvcMybatisVueLayuiElem…

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不是草稿或者已发布状态&…

[Mac软件]Adobe Photoshop 2024 v25.7 中文激活版

黑果魏叔消息Adobe Photoshop 2024 v25.7是**一款领先的图像编辑软件**,它提供了一系列专业的修饰工具和强大的编辑功能。 首先,作为数字图像处理和编辑的行业标准,Adobe Photoshop被广泛应用于多个领域,从平面设计、摄影后期处理…

大模型应用开发极简入门

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

【Leetcode】740- 删除并获得点数

问题简述 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除所有等于nums[i]-1和nums[i]1的元素。 开始你拥有0个点数。返回你能通过这些操作获…