MyBatis--------解决Oracle的to_number函数不支持有字母的情况
需求:某表的某列是varchar类型,此列里存放的不全是数字,如何使用to_number函数呢?
解决:使用translate函数
SELECT ${primaryKey} FROM ${sourceTable}
WHERE
1=1
-- 匹配全数字类型
AND regexp_like(${sourceField}, '(^[0-9]+.[0-9]+$)|(^[0-9]$)')
<if test=" minValue!= null">
<![CDATA[
-- 将数字保留,其他的大写字母移除
AND TO_NUMBER(translate(${sourceField},
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789'))
>= #{minValue}
]]>
</if>
<if test=" maxValue!= null">
<![CDATA[
-- 将数字保留,其他的大写字母移除
AND TO_NUMBER(translate(${sourceField},
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789'))
<= #{maxValue}
]]
</if>