postgresql中integer字段的模糊查询

数据库中string类型的模糊查询很简单,integer类型的字段模糊查询没有简便方法。

postgresql可以使用如下方法:

select * from task_requirement
where 1=1
and to_char(version,'999999999') like '%'||ltrim(to_char(1,'9'))||'%'

将version字段变为字符串类型to_char(version,'999999999'),999999999很大了,相信版本号不需要这么大。

将参数也用to_char转化为字符串类型;其中1是传的参数,而‘9’是位数,to_char的用法,将1转换为‘1’,若是to_char(1,'99'),则将1转换成‘01’,缺位数则用0补全,

使用replace方法将0去除,存在问题,模糊查询0的version时存在问题。所以用java定义一个新属性versionLen,处理然后将长度传过来。

			Integer version = taskRequirement.getVersion();
			Integer versionLen = 0;
			while(version>=0){
				if(version==0){
					versionLen = 1;
					break;
				}else{
					version /= 10;
					versionLen++;
				}
			}


<if test="record != null and record.version != null and record.versionLen != null">
    and to_char(version,'999999999') like '%'||ltrim(to_char(${record.version},''||${record.versionLen}))||'%'
</if>

还有一点就是只能使用‘9’这样的带能将数值转为字符串;在使用to_char(1,'9')的时候,前面会出现一个空格不知道为什么,所以用ltrim去除左边空格,就能进行inteher类型字段模糊查询了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值