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

版权声明:如果觉得文章对你有用,转载不需要联系作者,但请注明出处 https://blog.csdn.net/jinxin70/article/details/86541755

看一下代码:

<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

猜你喜欢

转载自blog.csdn.net/jinxin70/article/details/86541755
今日推荐