Java开发中使用sql简化开发

news2024/10/4 14:26:47

引语:

在Java开发中,我们更希望数据库能直接给我们必要的数据,然后在业务层面直接进行使用,所以写一个简单的sql语句有助于提高Java开发效率,本文由简单到复杂的小白吸收,还请多多指教。

使用MySQL数据库,先创建一个简单的表

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL,
  email VARCHAR(100) NOT NULL
);

开始玩吧,先看原始数据

-- 初始
SELECT * from `user`

在这里插入图片描述

以上原始数据,是我们开始的关键,现在有需求,要拿到所有人的name

-- 添加concat返回的是list<String>
SELECT CONCAT(`name`)
from `user`

在这里插入图片描述

但是我们需要的是一个结果,而不是list的,所以这里要用group_concat

-- 使用group_concat, 一个字符串,形式是:["哈哈哈,嘿嘿嘿","空空空,白白白","哈哈哈,嘿嘿嘿","空空空,白白白"]
SELECT GROUP_CONCAT(`name`) as result
from `user`

在这里插入图片描述

我们可以看到结果已经是一个字符串了,但是有重复,我们这里加上去重

-- 根据业务场景,看似满足需求了,的确去重了,结果形式:["哈哈哈,嘿嘿嘿","空空空,白白白"]
SELECT GROUP_CONCAT( DISTINCT `name`) as result
from `user`

在这里插入图片描述

然后拿到目标值啦,发现返回数据没有问题,但是不能直接利用,若想直接想通过正则切分字符串使用,但是切分出来的结果,第一个是:[“哈哈哈,嘿嘿嘿”,最后一个是:“空空空,白白白”],但是我又不想在业务层处理这个 ‘[’ 和 ‘]’,所以sql继续升级,先去掉结果中的 [ ],这里使用replace(字符串结果,要去掉的‘[’,‘成为空字符串’)

SELECT REPLACE(GROUP_CONCAT( DISTINCT `name`),'[','',']','') as result
from `user`

在这里插入图片描述

但是报错了 check the manual that corresponds to your MySQL server version for the right syntax to use near ‘,’]‘,’') as result,我数据库版本不支持,所以用下面的sql

--  使用以下这个版本
SELECT REPLACE(GROUP_CONCAT( DISTINCT `name`),'[','') as result
from `user`

在这里插入图片描述

上面的sql只是先去掉了 ‘[’,继续加replace函数,去掉 ‘]’,如下

-- 但是业务层只能拿到 哈哈哈,嘿嘿嘿,因为 "空空空,白白白"] 这里的 ]还没有处理,那就再加一个replace
SELECT REPLACE(REPLACE(GROUP_CONCAT( DISTINCT `name`),'[',''),']','') as result
from `user`

在这里插入图片描述

直观看的话,数据库展示的数据已经是我们想要的,但是不对,因为我们的value中的形式:“xxx,xxx”,“xxx,xxx”,并不能直接丢出来使用,还需要对结果进一步处理,使用 SEPARATOR 切分

-- 处理得到的最后结果是 "哈哈哈,嘿嘿嘿","空空空,白白白",因为这里name是字符串,它的value用,分隔,我们还需要对最终的结果进行处理,本是想用sql来处理,SEPARATOR
SELECT REPLACE(REPLACE(GROUP_CONCAT( DISTINCT `name` SEPARATOR ','),'[',''),']','') as result
from `user`

最终我们拿到目标结果值,哈哈哈,嘿嘿嘿,空空空,白白白,可以直接使用

如果你觉得太麻烦的话,可以使用更直观的方式,但是可读性就有一些争议了,这里使用trim函数,相比较replace,trim更加简洁

-- 最终方案本来要采取这个的,但是别忘记了sql中一个重要的函数:trim(),该函数可以直接将目标字符串替换,最最终 不用replace 直接一波`user`
SELECT TRIM(BOTH '[]' FROM IFNULL(GROUP_CONCAT( DISTINCT `name` SEPARATOR ','),'')) as result
from `user`

顺带一提:trim()我没有校验,实际感兴趣的大佬可以告诉我答案。

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

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

相关文章

GO 语言GC

目录 写屏障 读屏障 GO语言GC准备 堆内存结构: GC内存分配: GC触发&#xff1a; P的作用: 写屏障 实现强弱三色不式,为了避免误删,则实现写屏障. 写屏障是在写操作中插入指令,目的是把数据对象的修改通知到GC GO语言支持两种写屏障 读屏障 非移动垃圾回收(例如 三色)天…

详解c++---智能指针

目录标题 为什么会有智能指针智能指针模拟实现库中的智能指针auto_ptrunique_ptrshared_ptr 智能指针的线程安全问题循环智能指针weak_ptr定制删除器定制删除器的实现 为什么会有智能指针 根据前面的知识我们知道使用异常可能会导致部分资源没有被正常释放&#xff0c;因为异常…

Jupyter入门使用教程

1 Jupyter Notebook与Jupyter Lab简介 Jupyter Notebook是一个开源的Web应用&#xff0c;在深度学习领域非常活跃。用户可以在这里创建和分享可执行代码、可视化结构和注释说明的文档。 Jupyter Notebook以网页的形式展现&#xff0c;用户可以在此网页中直接编辑代码、运行程…

语法怎么学 | 7-非谓语动词

为什么要学非谓语动词 太常见了&#xff0c;非谓语动词可以做句子中&#xff0c;除了谓语的任何成分 是一个非常重要课题&#xff0c;弄懂了这个&#xff0c;就相当于弄懂了语法的90%&#xff0c;特别是语法题 怎样学习 我在小破站上查了不少教程&#xff0c;大多数都很好&…

三种视频字幕提取工具让你更好地阅读和学习

视频字幕提取技术是指通过计算机算法自动从视频中提取出字幕文本的技术。这项技术能够大大提高视频的可用性&#xff0c;使得聋哑人士、语言学习者以及听力不佳的观众可以更好地理解视频内容。那么你知道视频字幕提取工具免费有哪些吗&#xff1f;接下来我将分享三款我亲测好用…

CSDN铁粉是什么?看完这篇你也可以获得忠实铁粉!(详细总结)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; 什么是铁粉&#x1f3ac; 为什么存在铁粉⁉️ 为什么我的铁粉那么少 &#x1…

Spring【AOP】

AOP-面向切面编程 AOP&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 SpringAop中&#xff0c;通过Advice定义横切逻辑&#xff0c;并支持5种类型的Advice&#xff1a; 导入依赖 <dependency><groupId>…

Linux基础服务11——LNMP架构

文章目录 一、环境说明二、安装nginx三、安装mysql四、安装php五、配置nginx六、配置php七、验证 一、环境说明 主机服务192.168.161.129nginx192.168.161.131mysql192.168.161.132php 二、安装nginx 1.参考文章&#xff0c;nginx部署。 三、安装mysql 1.参考文章&#x…

隐私计算大会亮点前瞻:“隐私计算互联互通标准及第二批实践示范征集项目”解读预告

7月26日&#xff0c;2023隐私计算大会将于青岛正式扬帆&#xff0c;本次大会将齐聚业内专家大咖共论行业最新进展&#xff0c;洞察未来发展趋势&#xff0c;共同推进隐私计算行业蓬勃发展。本次大会将公开正式发布解读《隐私计算应用研究报告&#xff08;2023&#xff09;》、“…

QT6之QtWidgets和QWidget

1、概念 如上图&#xff1a; QtWidgets是模块&#xff0c;它不是类。它与Qt core模块等是同级别的模块&#xff0c;它提供了一系列类的来创建界面相关。QWidget是类&#xff0c;它不是模块。它是所有用户界面对象的基类&#xff0c;QWidget 及其子类是开发桌面应用的核心&…

隐私计算大会亮点前瞻:《隐私计算应用研究报告(2023年)》发布预告

7月26日&#xff0c;2023隐私计算大会将于青岛正式扬帆&#xff0c;本次大会将齐聚业内专家大咖共论行业最新进展&#xff0c;洞察未来发展趋势&#xff0c;共同推进隐私计算行业蓬勃发展。 本次大会将公开正式发布《隐私计算应用研究报告&#xff08;2023&#xff09;》、“隐…

IDEA 安装完成无法打开排查插件问题

以前我自己遇到IDEA&#xff08;19.3&#xff09;突然打不开了、所以写过一篇IDEA无法正常启动&#xff08;打不开&报错&#xff09;_idea启动报错_DJyzh的博客-CSDN博客版权声明&#xff1a;转载请附上文章地址https://blog.csdn.net/qq_42672839IDEA无法正常启动 今天在清…

演讲实录:以 AI 变革组织运营与管理

7月14日&#xff0c;以“释放数智生产力”为主题的 Kyligence 用户大会在上海前滩香格里拉大酒店成功举行。大会现场发布了 Kyligence 最新产品家族&#xff1a;AI 数智助理——Kyligence Copilot 的预览版、一站式指标平台 Kyligence Zen 的 Cloud 和 Enterprise 版本&#xf…

0基础学习VR全景平台篇 第66篇:VR直播-如何管理VR直播活动

一、电脑端管理 已创建好的VR直播活动可以在【管理后台】-【作品管理】-【VR直播】列表下查看到。 1、点击活动标题可以直接进入电脑端的播放页面&#xff0c;点击“编辑”按钮可以进入活动的设置界面。 2、电脑端播放页 该链接地址是可以自适应电脑端和手机端的&#xff0c…

C国演义 [第十二章]

第十二章 打家劫舍题目理解步骤dp数组递推公式初始化遍历顺序 代码 打家劫舍II题目理解步骤递推公式初始化遍历顺序 代码 打家劫舍 力扣链接 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋…

微服务Day2——Nacos注册中心入门

Nacos注册中心 1、Nacos简介 国内公司一般都推崇阿里巴巴的技术&#xff0c;比如注册中心&#xff0c;SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 2、Mac安装 进入Nacos官网下载安装包 http://nacos.io/zh-cn/ Github仓库地址 下载解压后进入nacos/bin目录下 …

【论文解读】2017 STGCN: Spatio-Temporal Graph Convolutional Networks

一、简介 使用历史速度数据预测未来时间的速度。同时用于序列学习的RNN(GRU、LSTM等)网络需要迭代训练&#xff0c;它引入了逐步累积的误差&#xff0c;并且RNN模型较难训练。为了解决以上问题&#xff0c;我们提出了新颖的深度学习框架STGCN&#xff0c;用于交通预测。 二、…

【云原生|Docker系列第4篇】Docker的容器的入门实践

欢迎来到云原生系列的第4篇博客&#xff01;在前面的两篇博客中&#xff0c;我们已经学习了Docker镜像的基本概念和入门实践。本篇博客将带您深入了解Docker容器&#xff0c;探索如何使用Docker容器来构建、运行和管理应用程序。无论您是新手还是有一定经验的开发者&#xff0c…

PHP循环

PHP while 循环 PHP SwitchPHP For 循环 PHP while 循环在指定条件为 true 时执行代码块。 PHP 循环 在您编写代码时&#xff0c;经常需要反复运行同一代码块。我们可以使用循环来执行这样的任务&#xff0c;而不是在脚本中添加若干几乎相等的代码行。 在 PHP 中&#xff…

linux安装mysql以及使用navicat连接mysql

目录 一、下载mysql 二、安装mysql 三、使用Navicat连接MySQL 四、常见问题 1、启动服务时报错 Failed to start mysql.service: Unit not found. 的解决方法。 2、登录过程出现&#xff1a;access denied for user’root’‘localhost’(using password:Yes) 的解决方…