版权声明:如果觉得文章对你有用,转载不需要联系作者,但请注明出处 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]') >=#{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]') <=#{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]') >=#{rangeStart})是范围查询。