解决:同样的SQL语句,在java程序中查询没有结果,但是在数据库中能查询到数据

本文探讨了一位开发者遇到的SQL查询返回空结果的问题,通过对比发现是由于SQL语句中多了一个空格所致。文章强调了在处理SQL语句时,特别是从控制器接收参数时,去除字符串两端空格的重要性,以避免类似错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天碰到了个问题,就是我的sql语句在数据库查询的结果是空的,但是我吧语句赋值出来。直接去数据库查询确可以查询到数据
如下:

==>  Preparing: SELECT top 300 Id, FullName,MethodName,Message FROM [dbo].[TrackLog] WHERE Message like 'http://mobileapi.centanet.com%' and FullName like 'MobileApi.CentaNet.Mobile.Model.Request%' and FullName like concat('%',?,'%') ORDER BY Id desc 
==> Parameters: GetRailWayPostsRequest (String)
<==      Total: 0

当我把语句赋值到navicat的时候,却能查询到数据

SELECT top 300 Id, FullName,MethodName,Message FROM [dbo].[TrackLog] WHERE Message like 'http://mobileapi.centanet.com%' and FullName like 'MobileApi.CentaNet.Mobile.Model.Request%' and FullName like concat('%','GetRailWayPostsRequest','%') ORDER BY Id desc 

然后我觉得这个问题很奇怪,在网上找到了一篇博客
他这个可能可以解决问题但是解决不了我的问题。然后我又试了下其他正常的语句。一个字眼一个字眼的比较。终于发现,我的问题是因为多了个空格导致的
在这里插入图片描述

总结:当出现这个情况,一般可能是特殊字符导致的,我这个就是因为多了个空格。controller接受参数的时候可以考虑将将字符两边的空格去掉。避免这种问题。一不小心十几分钟就被消耗了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值