Oracle只查询包含纯数字的记录

本文介绍如何使用REGEXP_REPLACE函数结合正则表达式和LENGTH函数在数据库中进行精确的数字范围查询,适用于Oracle等数据库环境。

看一下代码:

<if test="rangeStart != null and rangeStart != ''">
	and (LENGTH(t.column) = LENGTH(REGEXP_REPLACE(t.column, '[^0-9]')) and REGEXP_REPLACE(t.column, '[^0-9]') &gt;=#{rangeStart})
</if>

<if test="rangeEnd != null and rangeEnd != ''">
	and (LENGTH(t.column) = LENGTH(REGEXP_REPLACE(t.column, '[^0-9]')) and REGEXP_REPLACE(t.column, '[^0-9]') &lt;=#{rangeEnd})
</if>

REGEXP_REPLACE

REGEXP_REPLACE是一个支持正则的字符串替换函数。只指定前两个参数,即源字符串,和正则表达式,会返回匹配的结果。

比如

select regexp_replace('abc123a4','[^0-9]') from dual;

结果:

LENGTH

LENGTH是一个返回字符串长度的函数

 

LENGTH(t.column) = LENGTH(REGEXP_REPLACE(t.column, '[^0-9]'))表示原字段值的长度和匹配的数字长度相等,即查询只包含数字的结果。

后面的REGEXP_REPLACE(t.column, '[^0-9]') &gt;=#{rangeStart})是范围查询。

参考:

Oracle 正则表达式(一)

REGEXP_REPLACE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值