【杂谈】SQL 杂录: 如何模糊查询表里不存在的字段

合成孔径雷达Chirp Scaling(CS)算法MATLAB仿真实现 本人也是初学《合成孔径雷达成像算法与实现》,在GitHub上下载的关于CS算法的代码,仔细读了读,发现中间有一些不合理之处,动手改了一改,重新写了一个代码供初学者学习,有什么问题留言即可。 非常感谢源代码的作者,虽然中间有少许不正确的地方,但是对我理解cs算法的帮助非常大,非常感谢!!! 代码中提到的(4.31)这种均是在《合成孔径雷达成像算法与实现》中的公式 以下是MATLAB的仿真程序,直接复... 阅读详情

SQL 杂录: 如何模糊查询表里不存在的字段

1. 前提&场景

前提
表与需求都合理且不能更改。因此接下来我们就要根据需求与表结构实现一个较为特殊的模糊查询。

场景
要根据某个字段进行模糊查询, 但是这个字段是由若干个字段复合组成的,该字段在表中分为若干个字段存储,显示的时候拼接成一个字段。由于若干个字段复合略显复杂,因此接下来我们以2个字段举例:

举例
例如,我们某个编号,由前缀 prefix与 自增数字 number组成。一般情况下,我们直接从表里查prefix与 number,然后再拼接显示即可。但是,当前特殊情况下,当number小于10时,为了对齐显示方便用户查看,需要在显示的时候在组合形成的字符串中补位补个"0",像这样:

prefixnumber
A1
B20

通过这个表查出来的结果若直接拼接,将会是:

prefixnumberresult
A1A1
B20B20

目标结果与实际显示应该是:

prefixnumberactual_result
A1A01
B20B20

实现这种显示,要么就要在查询的时候,直接查出来封装到VO中;要么就要分别查出让前端进行拼接。
毕竟,前提不能变嘛,表里没有冗余这两个字段拼接好的字段,无法直接模糊查询这个冗余字段。

那么问题来了,如何模糊查询这个可能随时在中间补位的字段呢?

2. 思路与解决方案

一般情况
一般情况下,我们直接查询,拼接即可。若后端封装的VO 存在该复合字段,则可以在查询的时候就用CONCAT函数查询,例如

SELECT 
*
FROM t1
WHERE CONCAT( prefix, number ) LIKE CONCAT('%', '0', '%')

这是一般中间没有补位的情况下这样查是比较方便的方式。

思路
一般遇到复合字段,两种思路:

  1. 先查后拼接:不增加额外开销,直接查询,查询完毕后,再交给前端拼接。这种方式对后端相对简单,对前端也提供了相对较大的样式调整灵活性。
  2. 查询时就拼接:通过聚合函数等方式,牺牲一点点 SQL 资源,在查询的时候就做好拼接,并能直接匹配查询条件。这种方式实际操作下来,最符合当前条件与需求。
  3. 业务上对查询条件进行过滤。效率最低、最麻烦的方法,类似于算法中的全排列算法,不到业务复杂到只能通过这种方法解决的地步决不用这个方法。

最终解决方案
聚合函数,通过聚合函数在查询时就实现拼接、匹配模糊字段。
以我们上文列举的两个字段复合并可能存在补位的情况为例:

SELECT
	*,
	IF(number < 10, CONCAT( prefix,'0', number ), CONCAT( prefix, number ))  AS total 
FROM
	t1
WHERE
    IF(number < 10, CONCAT( prefix,'0', number ), CONCAT( prefix, number )) LIKE CONCAT( '%', '0', '%' )

这样就解决了模糊查询查询数据库表中原本不存在的字段值。

3. 小结

对于遇到类似问题的朋友来说,以上方案可供参考。除了上文提到的参考方案,我们还可以根据不同的业务使用不同的聚合函数,以实现更多稍微特殊的查询,例如,在我解决问题的过程中,我的导师@Kievn就提到使用LOCATE()函数对数字与字符串做进一步判断与处理,可适配更多的场景。

总的来说,方法总比困难多,只要需求合理,设计合理,我们就有办法实现,持续卷!

滤波器设计实战:Filter Solutions软件从入门到精通 本文是Filter Solutions滤波器设计软件的实战指南,从入门到精通。通过设计一个低通数字滤波器的完整流程,详细讲解了参数设置、FIR/IIR选择、窗函数及逼近函数应用。文章重点介绍了如何利用这款经典工具高效完成滤波器设计、性能权衡,并将设计成果导出至MATLAB等平台进行实际验证与应用,是信号处理工程师提升效率的实用参考。 阅读详情

相关推荐

玩转Isaac Sim动态控制:从随机舞动到精准操控Franka的5种控制模式实测

本文深入实测了在NVIDIA Isaac Sim仿真平台中,利用Dynamic Control模块对Franka机械臂进行精准操控的五种核心模式:位置控制、单关节位置控制、速度控制、单关节速度控制和力矩控制。通过详细的代码示例和对比分析,阐述了每种模式的适用场景、参数调优技巧及从随机运动到闭环控制的实现路径,为机器人算法验证提供了实用指南。

night的博客 808

mysql不包含模糊查询

#包含like #不包含not like select * from CRM_HouseInfo where HouseName like '%江门奥园项目%' and HouseName like '%幢%' and HouseName not like '%商%';

qq_34631220的博客 1万+

matlab球面投影(二)

matlab球面投影,想做一个全景相机,不知道,要做成啥样,于是在MATLAB先仿真一下,看下是个啥样子 百度别人做的,复制下面的代码到MATLAB的命令串口下,,网上找了张全景图,可以是bmp,jpg,改程序就可以了 回车运行就可以看到结果。 复制下面代码时,下面的中文注释记得删除,MATLAB是会报错的, close all; clear all; clc [x,y,z]=sphere(50); A=imread('a.JPG'); //名字是自己命名的,记得改 B=warp(x,y,-z,

rjszcb的博客 3165

判断一个数据库表中不存在的数据,进行查询

【代码】判断一个数据库表中不存在的数据,进行查询。

qq_65011645的博客 763

避坑指南:PyCINRAD处理CINRAD雷达数据时遇到的5个典型报错及解决方案

本文针对使用PyCINRAD库处理CINRAD雷达基数据时常见的5个典型报错,提供了详细的解决方案。内容涵盖环境配置、数据读取、PPI可视化及性能优化等核心环节,重点解决了版本兼容性、数据异常处理和中文乱码等实际问题,帮助用户高效处理雷达基数据并生成准确的PPI图像。

cc789的博客 1068

黑客渗透测试后门隐藏技术揭秘

本文介绍了在授权渗透测试中隐藏后门文件(muma.exe)的多种技术手段。主要包括:通过WinRAR自解压脚本将后门与正常程序捆绑实现双开;利用系统自动运行目录和注册表实现开机自启;修改文件图标伪装成常用软件;将文件存放在冷门系统目录;设置系统+隐藏双重属性增强隐蔽性。此外还涉及对抗安全软件的加壳(UPX)、免杀(msfvenom编码)技术,以及进程注入、日志清除等运行隐藏方法。所有技术仅限合法授权测试使用,未经授权使用将面临法律责任。

m0_60781580的博客 1040

SQL查询A字段不包含B字段

在实际业务中,数据库A字段保存了一份字符串,同时将A中字符串的固定内容单独另存了B字段。 测试发现bug引发B字段跟A字段字符串对应内容不匹配的情况,导致统计跟显示的钱不一样。 需要找到错误数据。即寻找B字段不包含A字段的内容 SELECT * FROM tb1 WHERE a NOT LIKE CONCAT('%', b, '%'); id state_education_course_id content 10000 20100 {“10000”:“安防监控运维服务”,“10001”:

qq_43400993的博客 8927

Delta并联机构运动学正逆解:从理论建模到Matlab实战

本文深入解析了Delta并联机构运动学正逆解的核心原理与实战方法。通过几何建模,清晰阐述了其“逆解简单、正解复杂”的特性,并详细推导了基于一元二次方程的逆解解析算法与采用牛顿-拉弗森迭代法的正解数值算法。文章结合完整的Matlab代码实例,从符号推导到数值求解,提供了从理论到实践的完整实现路径,助力机器人开发者掌握Delta并联机构的运动学分析。

weixin_29096377的博客 435

sql 模糊查询不包含_当你的网站查询功能处是这样,那该处一定存在sql注入,要抓紧整...

搜索功能几乎是所有网站都有的功能,我们来看一下我们搭建好的这个网站中的搜索功能。网站正常打开后卫以下页面,该页面总共2条信息。这时候输入“专业编号”为03我们可以看到,输入03后会把专业编号包含有03的记录给查询出来。ps:其实这是sql语句中的模糊查询,我们输入的内容会被当做模糊查询的条件,只要包含有我们输入的内容就会被查询出来。比如:我们一组数据有:110,114,115,117,1178,1...

weixin_39637921的博客 644

深入YOLOv8内部核心:用RepNCSPELAN4深度重构主干网络,即插即用的高效涨点方案

本文提出了一种改进YOLOv8目标检测模型的方法,通过在YOLOv8中引入RepNCSPELAN模块来提高检测性能。该模块融合了RepVGG重参数化思想与CSP-ELAN结构,在保持推理速度的同时增强特征表达能力。实验结果表明,改进后的RepNCSPELAN-YOLOv8相比原模型在多项指标上均有提升:准确率从0.84提高到0.86,召回率从0.72提升至0.81,mAP50和mAP50-95也分别提高了0.06和0.04。文章详细介绍了模块设计原理和移植步骤,包括配置文件创建、代码修改等关键环节,为YOL

FJN110的博客 189

ADS基础教程12 - 参数扫描

在硬件设计、仿真以及调试阶段,很多时候需要找到一个合理的参数来使设计处于最优状态。前面所讲的调优方式是其中的最直接的手段。因此,本文将介绍ADS中如何指定元器件的参数为变量,并可以对变量设置相应的约束条件,来实现的变量进行多组参数的仿真结果的展示。在图形显示界面,添加一个Plot,并添加参数结果。此时,结果中会显示出所有的扫描结果。参数扫描的要素包含:新建变量、变量参数设置、扫描模型设置三个方面。如果找不到该图标,在菜单栏单击右键,弹出的对话框将。,弹出的选项卡中,将添加两个变量。点击菜单栏的仿真按钮。

XZ_ZC的博客 8162

sql查询之拼接外表或该表不存在的数据,简化多表联查的操作

最近写项目时,用到了多表联查的知识点,我需要传article类和web_user类的username的参数 结果示例,用了三表联查 sql语句简单示例 在mapper映射的xml文件里如果不用我一会在正文中提到的方法,本来要写这么多 下面是用了”硬拼“之后的代码,根本不用web_user这个表,还有给字段起个别名就不用再写自定义映射了,不容易乱 第一个代码块的结果: 再来看一个例子 查询结果 这条 SQL 查询语句将在执行时返回一个结果集,该结果集将包含两个布尔值,分别表示“1等于1”和“2等于1”的

PiggyOne123的博客 677

科研绘图系列:R语言绘制极坐标饼图(pie plot)

科研绘图系列:R语言极坐标饼图(pie plot)

专注生信领域 1054

SQL 模糊查询

在进行数据库查询时,有完整查询和模糊查询之分。 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 比如 SELECT * FROM [user] WHERE u_name

scyatcs的专栏 699

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Mysql 查出某个字段不包含某个值

现在想要排除 status = 3的,查出来后的数据为。比如:某表 table_ceshi , 有以下的数据。遇到了个sql查询某个字段不包含某个值,记录一下。

qq_34828100的博客 1万+

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

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

SQL语句查询字段中不含有汉字的条目

SQL语句模糊查询,使用like,其后加上SQL里的通配符即可。1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。 2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。 3、LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。 4、LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。

3932

关于sql查询A表存在B表不存在数据的问题

在做项目的时候遇到一个问题:我需要查询A表存在而B表不存在的数据。第一想法便是使用not in,当时的sql是这样的。接着在网上查了一下关于not in语法,想具体了解的话大家可以看一下这位大佬的文章。看着简单,但查询的结果为空,瞬间头大,第一想法就是What happened?大致意思就是数据中有null值,查询不到数据,同时大佬也给了解决的方案。另外分享一下我自己的解决方法。

weixin_44282801的博客 3930

MySQL查询关联表中不存在的数据NOT EXISTS()

MySQL查询关联表中不存在的数据NOT EXISTS()

软件测试大叔 4076

SQL SERVER 实现全局模糊查询

SQL SERVER 全局模糊查询

gong56的博客 737

postgresql查询所有表中是否存在某个字段

postgresql查询所有表中是否存在某个字段

南来北往的客 900

查询某字段是否包含一段字符的sql语句

locate表达式的是有返回值的,如果字段值包含指定字符串,就返回包含的个数,否则返回0,使用此方案,若locate表达式大于0即为包含指定的字符串,并且很容易兼容代码的写法,使用此方案最优;在查询时就会出错,因为#{selectTime}的本质是一个字符串,替换后就是like "%"20221219"%",会发现多了两个引号,所以错误,所以最好使用方案2;

Carrot_ly的博客 6376

31.日常问题整理[2022/09/28]sql查询返回结果要有不存在的自定义字段

sql查询返回结果要有不存在的自定义字段

weixin_46876034的博客 342

SQL怎么实现模糊查询

模糊查询的语句一般如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件; 关于条件部分,有以下匹配模式: 1. %:表示零个或多个字符。 可以匹配任意类型和任意长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 select * from user where username like '%张%'; 将会把user这张表里面,列名username中含有张的记录全部查询出来。 如果需要找到user这张表里面,字段username中既有张,又有李的记录,可以使用and

学而不思则忘 3万+

sql语句中exists用法详解

sql语句中exists用法详解。

ma286388309的博客 1万+

【MySQL 查询A表存在B表不存在的数据SQL总结】

【MySQL 查询A表存在B表不存在的数据SQL总结】

m0_49762804的博客 2177

你知道什么是 MySQL 的模糊查询?

作者 | luanhz责编 | 郭芮本文对MySQL中几种常用的模糊搜索方式进行了介绍,包括LIKE通配符、RegExp正则匹配、内置字符串函数以及全文索引,最后给出了性能对比。引言My...

优快云资讯 4690

查询SQL Server 数据表中不包含某一列的SQL语句该怎么写

SELECT * FROM syscolumns WHERE name NOT IN(.....) AND id=object_id('表名')

weixin_56560002的博客 4505
上一篇: 【杂谈】Spring 核心总结
下一篇: 我的创作纪念日
CoderSharry
博客等级 码龄4年 515粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值