数据库char字段做trim之后查询很慢的解决方式

Qt | 开发过程中总结的经验 关于如何判断自己的Qt库是多少位,有个误区就是很多人要么看成了QtCreator的关于信息中列出的位数,要么以为自己是64位的系统就认为是64位的Qt,最终要在Qt构建套件中查看具体位数,大概从Qt5.14开始基本上很少提供32位的库,尤其是Qt6.0以后基本上默认就是只有64位的库了,这也是顺应时代潮流,毕竟不久的将来(个人预计2030年以前)基本上32位的系统占比不超过1%,放心大胆的用64位的库吧,抛弃烦人的32位以及XP系统。Qt常用类的头文件的函数看完学完使用一遍并加以融会贯通,月薪30K起步。 阅读详情
select * from TABLE0 where trim(column1)=:param

当表数据量大时,即使给column1字段加上索引,这条查询语句也会很慢。

因为使用trim函数后,column1的索引会失效,有两种处理方法:

1.给表加上trim(column1)函数索引

这样就能走索引查询,不用全表扫描

2.代码里面对param补齐末尾的空格

使用tirm无非是担心char字段存储的长度没达到数据库设置的长度,数据末尾会出现空格,而前端展示数据时一般会去掉空格传给后端,这就导致无法查询出数据,char是用来存储定长字符的,虽然出现这种问题,是设计和使用上的不合理导致,但是还得解决这个问题。

可以在程序中对传入参数的末尾补齐空格,直到达到char字段的长度,这样查询就不需要tirm了,java代码如下:

    private String formatChar(String s, int charLen){
        int len = s == null ? 0 : s.length();
        if(len > 0 && len < charLen){
            StringBuilder blank = new StringBuilder();
            for (int i = 0, j= charLen - len; i < j; i++) {
                blank.append(" ");
            }
            s = s + blank;
        }
        return s;
    }

如何在 DevOps 管道中实现 AI? AI与DevOps的融合(AIOps)正在重塑软件开发生命周期。本文系统阐述了AI在DevOps中的五大应用场景:智能监控、自动化测试、安全防护、CI/CD优化和事件管理,并提出了六步实施框架:痛点识别、工具选型、流程集成、智能监控、MLOps和治理合规。通过Netflix、Google等企业的实践案例,验证了AI在提升部署效率(降低40%故障率)、缩短问题解决时间(MTTR减少60%)方面的显著价值,同时指出数据质量、模型偏差等实施挑战。研究表明,战略性地 阅读详情

相关推荐

双有源桥DC-DC变换器:原理、软开关与移相控制深度解析

隔离型DC-DC变换器是电力电子系统的核心部件,通过高频变压器实现电气隔离与电压匹配,保障系统安全与灵活适配。其工作原理基于功率半导体器件的开关动作,通过调制策略控制能量传输。该技术的核心价值在于实现高效、高功率密度的电能转换,并支持双向能量流动,这对于提升系统整体能效和运行灵活性至关重要。在新能源储能、电动汽车V2G及数据中心供电等场景中,双向能量流成为刚性需求,推动了如双有源桥等先进拓扑的应用。本文聚焦于双有源桥这一实现高效双向隔离变换的“明星”方案,深入剖析其利用移相控制实现软开关的机理。通过分析谐振

weixin_34195142的博客 380

Oracle表删除大量数据(千万)后查询变慢问题

数据库数据清理后产生的问题

grace_yoyo的专栏 8595

FPGA进位链(Carry Chain)实战:从Xilinx CARRY8原语到性能优化全解析

本文深入解析了FPGA进位链(Carry Chain)的原理与应用,重点剖析了Xilinx CARRY8原语的端口功能与内部机制。通过实测数据揭示了进位链的真实延迟特性与温度影响,并详细阐述了如何利用DI和S信号进行动态路径优化、实现减法运算与条件进位选择,从而有效提升设计性能。最后,文章探讨了系统级的流水线拆分、布局约束等实战优化策略与常见陷阱。

weixin_29313817的博客 453

oracle sql =号左边含有 TRIM 严重影响性能!

这学期的项目中,用hibernate和oracle。表结构我们不能改,这样的遗留系统用hibernate有点麻烦。汗!别人把可变长的字符类型设计为CHAR,郁闷死。这样所有?形式的sql语句基本上无效(不是恰好这么长就找不到数据),这是oracle的JDBC限定了(mysql的JDBC不会)。然后就想到在=号左边用TRIM可以解决PrepareStatement找不到数据的问题。     麻烦来了...

clbchenlb的专栏 1331

Unity ProBuilder(自己创建斜面、拐角)

ProBuilder基础实例

weixin_56537692的博客 1551

elmos 524系列芯片笔记

芯片的工作工作原理:集成芯片Elmos524.03有发射回路和接收回路,手册有关的内部原理图,大致如下: 芯片会产生固有频率的电压信号,信号通过引脚DRV1、2输出给外部压电陶瓷片,产生固定频率的机械波,也就是所谓的超声波,超声波遇到障碍物时会反射,反射信号经过AINS、D引脚进入芯片,在芯片内部先后经过GAIN放大,滤波然后进入比较器,滤波后的信号(signal)同预先设定的阈值(threshold)比较产生信号输出。此信号最终会连接MCU处理器,需要重点关注。 基于这个内部的工作原

qq_38230916的博客 2487

【PG里常见的字段有索引但没有使用索引的原因】

对于一个系统而言,稳定性、性能、安全是很重要的几点。运维的一些工作也是围绕着这些去做。对于某些时候,业务层可能会向数据库层提出种种质疑:为什么数据库这么慢?为什么数据库挂了?为什么我这么用,SQL走不了索引?诸如此类。其实对于了解数据库和运维的大家都知道,这些使用关系型数据库的应用系统,SQL语句的好坏会直接影响系统的性能,很多系统性能很差最后发现都是因为SQL写得很烂的缘故。

小怪兽的博客 3038

天爱验证码wasm验证码逆向

本文分析了某网站采用WASM加密技术的情况,发现其加密方式主要针对data和轨迹信息,整体加密逻辑变化不大。通过反混淆技术可以还原代码,并确认加密过程分为两步:先对原始参数逐个加密,再调用WASM模块进行最终加密。研究发现关键参数drives和ki都存储在WASM模块内,通过提取wasm_exec.js文件即可直接使用该加密功能。本文仅提供技术研究思路,强调严禁用于任何违法行为。

码王吴彦祖的博客 936

oracle trim 函数很慢,加trim以后执行超慢,执行计划求解

RT,该字段未建立索引,以下贴出SQL,及执行计划,不加trim走hash join,求解释!----------------------语句如下,标红的字段加trim()EXPLAIN PLAN FOR select a.楼盘id,a.监测明细id,a.报告日期,a.广告位名称,a.页面名称,a.所属集团,b.项目名称,a.投放地域,a.媒体,a.对手,c.province as 关联所在省,c...

weixin_42515380的博客 812

论文阅读: SIGIR 2025 ID-Free Not Risk-Free: LLM-Powered Agents Unveil Risks in ID-Free Recommender Syste

咱们平时用的推荐系统(比如购物APP推商品、视频APP推剧),大多是“有ID”的——每个用户、每个商品都有个专属ID,系统靠这些ID记录你的浏览、购买历史,再给你推喜欢的东西。但这种方式有个大问题:新用户、新商品刚上线时没有ID历史数据,系统没法精准推荐,这就是“冷启动”难题。后来人们搞出了“无ID推荐系统”:不用ID了,改成直接分析商品的文字信息(比如商品标题、描述),靠大语言模型(LLM,类似ChatGPT的技术)把文字转成“语义代码”,再通过这些“代码”判断你可能喜欢什么。

CSPhD-winston的博客 977

Fiori Elements Analytical List Page 标题区配置全攻略:从变体、过滤模式到 UI.KPI 的工程化落地

ALP标题区是Fiori Elements Analytical List Page的核心交互区域,承担变体管理、过滤模式切换、KPI展示等关键功能。本文系统解析了标题区的组成结构、可用能力及工程实现要点,包括:1)标题区包含过滤类型切换、全局KPI、变体管理等交互元素;2)详细说明视觉过滤与紧凑过滤的同步规则及实现方式;3)介绍OData V2下通过UI.KPI注解配置标题区KPI的方法;4)提供manifest.json配置示例和CDS注解写法。文章还对比了V2与V4版本的差异,为ALP开发提供实用指导

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 245

MySql 索引失效、回表解析

前言 该篇内容: 1 结合实例,介绍常见的几种索引失效场景,以及对每个场景会做一些额外的扩展说明. 2 后面写着写着跑题了,为了想给大家讲下什么是回表...然后。。。。 正文 失效 一 查询的字段列未添加索引 ps:这...直接从失效二开始看吧,我承认我在啰嗦。 请看示例,表内 userProfession 列 存入的是人员的职业信息: 该字段列未使用索引,所以查询无法命中索引 : EXPLAIN SELECT * FROM userinfo WHERE ...

默默不代表沉默 3489

L型探测器几何畸变矫正

定位像素空间位置 -> 计算水平面投影点 -> 统一物理分辨率 -> 重采样生成新图。

如果想成为中心,那么就到中心去吧。 242

mybatis 使用oracle char 字段查询返回结果总是null

今天遇到的问题就是和下面帖子的一样, 数据库里面 localname字段长度是32,使用下面的参数查不到数据,是null. subinput.setMuid("110028"); subinput.setWumark("01"); subinput.setLocalname("Passwd");     where MUID = #{muid,jdbcType=CHAR}

HI,我是小瑞! 3499

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

mysql char mybatis_解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型。后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度。如字段 name char(5),若值为sgl,那么oracle会自动用空格补足长...

weixin_29027285的博客 1314

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【转】mybatis使用char类型字段查询oracle数据库时结果返回null

转自:https://blog.youkuaiyun.com/gnail_oug/article/details/77163424 使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型。后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会在后面自...

beidaol的专栏 673

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。 使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型。 后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度。如字段 name char(5),若值为sgl,那么oracle会自动用空格补足长度,最终值为sgl。 一、解决方法: 方法1:先用trim()函数把值去掉两边空格再作为条件查询,如

z69183787的专栏 2175

oracle+mybatis查询遇到CHAR类型字段

工作中遇到的: 某一张表A的某个字段B的类型为CHAR(4),往表A中插入一条数据,B字段的值为1,表面上(肉眼)看到B的值为1,但实际上为1加3个空格,会出现如下问题:mybatis的sql中用B字段去做查询条件 B='1'时查不到数据,但直接在数据库(通过工具,如navicat)运行该sql却可以查到数据! 解决办法: 1、查询条件改为TRIM(B)='1'; 2、修改数据库,将B字段的类型改...

北岛旅客的博客 4037

mybatis查询oracle数据丢失,mybatis使用char查询oracle时返回null 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题...

同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型。后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度。如字段 name char(5),若值为sgl,那么oracle会自动用空格补足长...

weixin_29038155的博客 757

数据库数据类型 - char() 填坑

此博客记录一次数据库数据类型 - char(10)造成的查询记录数目不匹配的问题,仅作相关参考。 问题描述: 在java中使用如下查询语句获得某个记录在数据库TB_A表中匹配次数。 select count(*) as NUM from TB_A where data_no = ? 然后使用ResultSet获得NUM的值(中间setParameter之类的细节省略),然而得到的coun...

qq_26817225的博客 5542

mybatis使用char类型字段查询oracle数据库时结果返回null

同事在学mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。 使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型。 后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度。如字段 name char(5),若值为sgl,那么oracle会自动用空格

蝈蝈的博客 7904

mybatis 使用oracle char 字段查询返回结果总是null

oracle数据库Project表中的NAME字段是char类型 ProjectMapper.xml配置如下:     Java.lang.String" >     select          from PROJECT     where NAME = #{name,jdbcType=CHAR}   ProjectMapper.java 中方法如下:

Java菜鸟 1874

Hibernate查询oracle数据库char类型字段,获取不到结果的问题

问题分析: 1)去掉按月份搜索的条件是可以的查询到数据。 2)拼接sql的形式是可以查询到信息的数据。 3)用其他Varchar2类型的字段动态绑定参数查询是可以的。 /** * YM 在数据库为char类型,字符长度为8,而字段为年月 例如:202101,而要和数据库中char类型的长度一致,长度不够的,用空格补齐。 */ if (StringUtils.isNotEmpty(ym)) { sql += " and mapp.YM=:YM"; params.put("YM", .

fred_kang的博客 661

mybatis中查询表有char类型和varchar类型

问题原因: 1.数据库中对应的A字段属性为char(10),而存储格式为YYYYmmdd,对于oracle数据库的char类型,当长度不足时,会在后位用空格补齐; 2.使用连接符$时,相当于CHAR型与字符常量的比较,字符常量作为char型处理,也就是在比较时会自动将常量右补齐空格后比较;所以可以正常查到结果; 3.使用占位符#时,相当于当CHAR类型和VARCHAR2类型比较,比较时对字段值是不...

HY0101的博客 5167

问题记录:数据库字段 `CHAR(n)` 导致前端返回值带空格的排查与修复

摘要:开发低代码平台时发现接口返回的JSON数据中某些布尔字段(如is_active、isblock)值后带空格(如"1 "),导致前端解析异常。原因是数据库表ECP_FORM_FUNCTION中这些字段定义为CHAR(1)而非VARCHAR2(1),CHAR类型会自动右填充空格。解决方案:1)修改字段类型为VARCHAR2(1);2)可选清理历史数据;3)验证结果。建议避免使用CHAR(n)存储短文本,优先使用VARCHAR2或NUMBER类型,并在应用层做TRIM处理。(149字)

慢慢 1033

mybatis使用char类型字段查询oracle数据库时结果查询不到的问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33920401的博客 1347
上一篇: 大数据量场景下sql查询中in查询项过多时很慢的其他解决方式
下一篇: java基于交易日表计算自然日、工作日、交易日
不恋水的雨
博客等级 码龄10年 95粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值