mybatis-plus使用apply进行字符串拆分后进行包含查询

首先数据库是 PostgreSql,有一个字段要进行模糊查询,我们一般是通过 like 就好了,但是偏偏这个字段是逗号分割的字符串,这个时候如果使用 like 也可以,只有字符串唯一,比如是 uuid 这类,但是啊,但是,条件不是一个字符串,而是多个字符串,总不能直接扔进去 like 吧,例如有个字段存了一个学生选修的课程,选修的课程可多个,这个时候要查询,想要查询选修了历史或者语文的学生信息出来(注意是或者)

id        name         courses
1         张三		   语文、历史、数学
2         王五          历史、数学、物理
3         赵六		   化学、政治、英语

其实简单的办法就是用两个 or 去查询后去重
例如:

select  distinct * from student where courses like '%语文%' or courses like '%历史%'

其实还有一种写法就是使用 @> 运算符,先将 courses 这个字段以逗号截取成一个数组,然后再通过 @> 运算符 判断包含关系,例如:

select * from student where regexp_split_to_array(courses , ',') @> array['语文', '历史']::text[]")

如果转化到 mybatis-plus 的 api 中如下:

String str = "\'语文\', \'历史\'";
LambdaQueryWrapper<Student> queryWrapper = new QueryWrapper<Student>().lambda()
.apply(" regexp_split_to_array(courses, ',') @> array[" + str + "]::text[]")})
.... 其他条件

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

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

相关文章

Java序列化详解

目录 一、什么是序列化 二、什么是反序列化 三、序列化和反序列化的作用 四、序列化和反序列化应用案例 五、常见序列化协议对比 5.1 JDK 自带的序列化方式 5.2 JDK序列化的缺陷 1. 无法跨语言 2. 易被攻击 3. 序列化后的流太大 4. 序列化性能太差 5.3 Kryo 5.4 Pr…

P8772 [蓝桥杯 2022 省 A] 求和--2024蓝桥杯冲刺省一

点击跳转例题 思路&#xff1a;简单数乘法结合律&#xff0c;然后前缀和的模板题&#xff1a; 前缀和的知识&#xff1a; 本题的代码&#xff1a;前缀和知识--模板&#xff1b; #include <bits/stdc.h> #define int long long //(有超时风险) #define PII pair<in…

rust语言tokio库底层原理解析

目录 1 rust版本及tokio版本说明1 tokio简介2 tokio::main2.1 tokio::main使用多线程模式2.2 tokio::main使用单线程模式 3 builder.build()函数3.1 build_threaded_runtime()函数新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图…

输入:123 输出321

给出一个 32 位的有符号整数&#xff0c;你需要将这个整数中每位上的数字进行反转。若翻转后超出取值范围&#xff0c;则输出0即可输入&#xff1a;123 输出321输入&#xff1a;-123 输出-321 #include <stdio.h> int main(int argc, char const *argv[]) { printf("…

StringBuilder与线程安全之StringBuffer

StringBuilder是Java中的一个类&#xff0c;位于java.lang包下&#xff0c;主要用于在程序中动态构建字符串。与String类相比&#xff0c;StringBuilder提供了一个可变的字符串序列&#xff0c;这意味着你可以在不生成新对象的情况下修改字符串的内容&#xff0c;从而提高了字符…

国产三维剖面仪—MPAS-100相控参量阵浅地层剖面仪

最近声学所东海站邹博士发来了他们最新的浅地层剖面仪—MPAS-100相控参量阵浅地层剖面仪的资料&#xff0c;市场型号GeoInsight&#xff0c;委托Ocean Physics Technology公司销售&#xff0c;地大李师兄的公司负责技术支持。 MPAS-100相控参量阵浅地层剖面仪就是俗称的三维浅…

git安装配置

1、下载安装 下载地址 2、配置git用户 git config --global user.name "yw" git config --global user.email "88888qq.com" 3、git init 初始化 4、生成ssh密钥 mkdir .ssh //创建文件夹cd .ssh //进入新建文件夹 ssh-keygen -t rsa // 输入密钥文…

(已解决)什么是vue导航守卫

vue导航守卫是是一种Vue Router内置的功能&#xff0c;它可以让我们在路由切换的过程中执行自定义的代码逻辑。 举一个简单的例子&#xff1a; import Vue from vue; import Router from vue-router;Vue.use(Router);const router new Router({// 路由配置... });// 全局前置…

SQL 注入 - http头注入之UA头注入探测

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、http头注入介绍 HTTP头注入是一种网络安全攻击手段,它利用了Web应用程序对HTTP头的处理不当或缺乏充分的验证和过滤。在这种攻击中,攻击者通过修改HTTP请求头中的某些字段,…

2、卷积和ReLU激活函数

python了解集合网络如何创建具有卷积层的特性。 文章目录 简介特征提取(Feature Extraction)卷积过滤(Filter with Convolution)Weights(权重)激活(Activations)用ReLU检测示例 - 应用卷积和ReLU结论In [1]: import numpy as np from itertools import productdef show_kerne…

Uniapp真机调试:手机端访问电脑端的后端接口解决

Uniapp真机调试&#xff1a;手机端访问电脑端的后端接口解决 1、前置操作 HBuilderX -> 运行 -> 运行到手机或模拟器 -> 运行到Android App基座 少了什么根据提示点击下载即可 使用数据线连接手机和电脑 手机端&#xff1a;打开开发者模式 -> USB调试打开手机端&…

使用 WMI 查询安全软件信息

在这篇文章中&#xff0c;我们将详细介绍如何使用 Windows Management Instrumentation (WMI) API 来查询当前计算机上安装的安全软件的基本信息。我们将分析代码的各个部分&#xff0c;并解释每个步骤所涉及的技术和原理。 一、什么是 WMI&#xff1f; WMI 是 Windows Manag…

Vue安装与配置

写入借鉴网址&#xff1a;好细的Vue安装与配置_vue配置-CSDN博客 下载Vue安装地址&#xff1a; Node.js — Download 查看是否安装成功&#xff1a; node -v npm -v 配置全局模式及缓存 结果通过&#xff1a; C:\Windows\system32>npm install vue -g added 20 packages …

大学生活的“三角平衡”与“合法”偷懒艺术

在那个被称为大学的神奇乐园里&#xff0c;我终于找到了自我&#xff0c;或者说&#xff0c;我找到了一种平衡。这种平衡被我称为“三角平衡”&#xff0c;它是由懒觉、兴趣爱好和学习这三者构成的。在这个平衡中&#xff0c;我像一名杂技演员一样&#xff0c;稳稳地站在三个顶…

C++重新入门-C++ 常量

目录 1.简介 2.整数常量 3.浮点常量 4.布尔常量 5.字符常量 6.字符串常量 7.如何定义常量 7.1 #define 预处理器 7.2const 关键字 1.简介 C 常量 常量是固定值&#xff0c;在程序执行期间不会改变。这些固定的值&#xff0c;又叫做字面量。 常量可以是任何的基本数据…

jsp商场会员卡管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 商场会员卡管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.…

python中sort()函数的详细使用方法

目录 使用reverse指定排序顺序 使用key指定排序规则 使用匿名函数制定规则 定义比较函数制定规则 制定多规则 多复杂规则排序 sort()是python非常好用的排序函数&#xff0c;可以对一个列表进行排序&#xff0c;这个排序只是会修改原列表&#xff0c;不会创建新的列表 使…

QT学习(五)C++函数重载

一、 函数重载 在同一个作用域内&#xff0c;可以声明几个功能类似的同名函数&#xff0c; 这些同名函数的形式参数&#xff08;指参数的个数、类型或者顺序&#xff09;必须不同。您不能仅通过返回类型的不同来 重载函数。 下面的实例中&#xff0c;同名函数 print() 被用…

前端开发:(三)CSS入门

1. 介绍CSS 1.1 什么是CSS CSS&#xff08;Cascading Style Sheets&#xff09;是一种用于描述文档样式和布局的样式表语言&#xff0c;用于美化和排版HTML和XML等标记语言的内容。 1.2 CSS的作用和优势 CSS的主要作用是控制网页的样式和布局&#xff0c;包括字体、颜色、间…

Hive与Presto中的列转行区别

Hive与Presto列转行的区别 1、背景描述2、Hive/Spark列转行3、Presto列转行 1、背景描述 在处理数据时&#xff0c;我们经常会遇到一个字段存储多个值&#xff0c;这时需要把一行数据转换为多行数据&#xff0c;形成标准的结构化数据 例如&#xff0c;将下面的两列数据并列转换…