oracle数据库参数为空时 inter=0 和 like ‘ %‘区别

news/2024/10/18 19:28:53/

目录

一,oracle数据库 like语法和原理

二,oracle数据库instr函数语法和原理

三,问题:把like换成了instr,查询不到数据

         1,like ‘ %’ 的含义

2,JdbcTemplate.queryForList 



一,oracle数据库 like语法和原理

"LIKE" 是 SQL 中用于模糊匹配的操作符之一,它可以用于查询符合某些条件的数据。

语法:

SELECT column_name(s) 
FROM table_name 
WHERE column_name LIKE pattern;

其中,pattern 是模式字符串,它可以使用通配符 (% 和 _) 进行匹配,例如:

  • %:表示任意字符出现任意次数,等价于正则表达式中的 ".*"
  • _:表示任意单个字符,等价于正则表达式中的 "."

原理:

"LIKE" 操作符是通过比较目标字符串和模式字符串,判断目标字符串是否符合模式字符串的规则来完成匹配的。在比较的过程中,模式字符串中的通配符会被转化成正则表达式的语法,并进行匹配。

例如,对于模式字符串 "abc%",它会被转化成 "^abc.*$" 的正则表达式,在匹配时,目标字符串如果以 "abc" 开头,则会匹配成功。

总之,"LIKE" 操作符是通过将模式字符串转化成正则表达式,并与目标字符串进行匹配,来判断是否符合条件的。

二,oracle数据库instr函数语法和原理

INSTR函数是Oracle SQL中的一个字符串处理函数,用于在字符串中查找指定子字符串的位置。它的语法如下:

INSTR(str1, str2, [start_position], [occurrence])

其中, str1是需要查找的字符串, str2是要查找的子字符串,start_position是可选参数,表示从哪个位置开始查找,默认值为1,occurrence也是可选参数,表示查找第几次出现,若不指定,则返回第一次出现的位置。

INSTR函数的原理是通过在str1字符串中查找str2的位置,并返回其所在的下标值。若未找到str2,则返回0值。INSTR函数可以用于查找字符串中某个字符的位置,或者判断字符串中是否包含某个子串。

三,问题:把like换成了instr,查询不到数据

List params =new ArrayList();
String paramName="";//没值默认是空字符串//源代码
sql+=" and t.name like '"+paramName+"%' ";//这个地方没有判空//修改sql注入问题后的
sql+=" and  instr(t.name,?)=1 ";
params.add(paramName);JdbcTemplate.queryForList(sql,params.toArray());

一切的起因是因为把like换成了instr,对于参数没有判空导致出现的异常

1,like ‘ %’ 的含义

and t.name like '%' 

正则表达式 "^.$" 的含义是匹配任意字符串。其中 "^" 表示匹配字符串的开头,"." 表示匹配任意字符(除了换行符),"" 表示匹配前面的字符零个或多个,"$" 表示匹配字符串的结尾。因此,该正则表达式可以匹配任何字符串,包括空字符串。

2,JdbcTemplate.queryForList 

方法参数参数是空字符串时不替换,不报错但是查不出任何结果

and  inster(t.name,?)=1 


http://www.ppmy.cn/news/107207.html

相关文章

如何获取ios打包证书

要获取ios证书,需要去苹果开发者中心注册苹果开发者账号,百度苹果开发者中心即可进入苹果开发者中心官网。 假如你还从来没注册过苹果开发者,你可以参考下面这篇文章先注册成为苹果开发者,必须要有苹果开发者账号才能生成ios打包…

TLS协议在ISO13400-2-2019文档中的内容解析

我很久之前写过解读ISO13400文档的系列文章:《详解ISO 13400文档(DoIP协议)》。当时没有说明解读的是哪一版13400,现在回过头看,应该是ISO13400-2-2012版本。那一版里没有TLS协议的相关内容,所以写的文章中也没有体现。 而2019版相比2012版,有两个方面的变化: 增加TLS…

Unreal Niagara粒子入门3 - 根据模型顶点发射粒子

在一些游戏中经常会出现根据模型顶点位置发射粒子的情况,这次就来实现一下该效果: 1.基础创建操作 首先从空粒子发射器开始创建,右键NiagaraSystem->Create empty system,打开粒子系统后再右键Add empty emitter&#xff1a…

获取图片中的颜色动态设置背景色(colorThief)

首先看对比图 上述的三张图分别是鼠标移入某个图片后根据获取的图片的原色动态设置的容器渐变背景 那么想要实现这个效果,我们必须先搞定一件事。鼠标移入某个图片获取当前图片的原色 主角上场:colorThief colorThief 具体怎么操作呢 : …

开源版社区团购系统源码 含小程序完整前后端+搭建教程+私有化部署

分享一个社区团购系统源码,源码开源可自由二开,含小程序完整前后端和详细的搭建教程,可私有化部署终身使用,功能界面diy团长供应商拼团秒杀优惠券菜谱积分群接龙充值预售配送等功能。 系统功能一览: 1、商品&#xf…

2023年测试前景?测试开发工程师养成记,开发企业级测试平台...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试开发&#xff…

如何修复缺失的mfplat.dll文件,多种修复mfplat.dl分享

当你在使用电脑时,突然遇到了缺失了mfplat.dll的错误提示,你可能会感到非常烦恼。不要担心,这是一个常见的问题。在本文中,我们将指导你如何修复缺失的mfplat.dll文件。 一.什么是mfplat.dll MFPLAT.DLL是Microsoft Windows操作系…

深度学习环境搭建笔记(一):detectron2安装过程

文章目录 第一步 安装python第二步 安装pycocotools第三步 安装Torch和Torchvision第四步 安装fvcore第五步 安装detectron2第六步 开始安装 第一步 安装python cuda 10.2 环境下 conda create -n detectron python3.7 第二步 安装pycocotools 下载对应的pycocotools-window…