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

看一下代码:


	and (LENGTH(t.column) = LENGTH(REGEXP_REPLACE(t.column, '[^0-9]')) and REGEXP_REPLACE(t.column, '[^0-9]') >=#{rangeStart})



	and (LENGTH(t.column) = LENGTH(REGEXP_REPLACE(t.column, '[^0-9]')) and REGEXP_REPLACE(t.column, '[^0-9]') <=#{rangeEnd})

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})是范围查询。

参考:

Oracle 正则表达式(一)

REGEXP_REPLACE

你可能感兴趣的:(sql,oracle,mybatis)