今天碰到了个问题,就是我的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接受参数的时候可以考虑将将字符两边的空格去掉。避免这种问题。一不小心十几分钟就被消耗了