前言:
如今咱们对“oraclesql去空格函数”都比较关注,大家都需要学习一些“oraclesql去空格函数”的相关资讯。那么小编同时在网摘上汇集了一些对于“oraclesql去空格函数””的相关知识,希望兄弟们能喜欢,同学们快快来学习一下吧!#记录我的2024#
情况复现
使用plsql能查询到数据
使用mybatis进行简单查询,无法查到数据
public List<TOutputForecastCorrect> find(String type,String beginDate,String endDate){TOutputForecastCorrectExample query = new TOutputForecastCorrectExample();TOutputForecastCorrectExample.Criteria criteria = query.createCriteria();criteria.andTypeEqualTo(type);criteria.andIsValidEqualTo("Y");if(StringUtils.isNotBlank(beginDate)){criteria.andRqGreaterThanOrEqualTo(beginDate);}if(StringUtils.isNotBlank(endDate)){criteria.andRqLessThanOrEqualTo(endDate);}List<TOutputForecastCorrect> tOutputForecastCorrects = tOutputForecastCorrectMapper.selectByExample(query);return tOutputForecastCorrects;}
结果:
JDBC Connection [oracle.jdbc.driver.T4CConnection@7154298e] will not be managed by Spring==> Preparing: select FC_ID, TYPE, NAME, RQ, UPDATE_VALUE, OPERATE_TIME, OPERATOR, IS_VALID from T_OUTPUT_FORECAST_CORRECT WHERE ( TYPE = ? and IS_VALID = ? )==> Parameters: 3(String), Y(String)<== Total: 0原因
上边的查询有一个条件type=3,数据表中type类型是char(2),当你添加传入参数3时,存入到数据库中的是3 (3后边有一个空格),这时候mybatis按type=3查询是无法查到的,但是plsql中能查到数据,原因是:使用sql查询时会自动去掉数据的空格进行匹配,而mybatis不会自动去掉空格。
解决:将type的类型char(2)改为char(1),这时在查询即可查到数据。
知识点
Oracle和mysql 中char类型是固定长度的类型,当位数不足时,用空格自动补足位数。oracle和mysql使用sql取char的数据的时候(plsql,navicat,数据库等),会自动丢掉后面的空格。mybatis不会自动丢掉后面的空格。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #oraclesql去空格函数 #oracle char去空格