为有多种情况的客户报告。结果必须包含“收入水平上限”-收入水平的上限 'cust_income_level' 列。 'cust_income_level' 例如,字段具有类似的内容: ‘G: 130,000 - 149,999’ . 如何仅提取 149999 转换成整数?
'cust_income_level'
‘G: 130,000 - 149,999’
149999
vfwfrxfs1#
如果没有正则表达式,可以使用
substr( cust_income_level, instr( cust_income_level, '-') + 2 ) as cust_income_level
如果要在order by中将其用作数字,可以使用function to \u number(),但这很容易出错,因为当值不是实际的数字值时,会出现错误。
to_number( substr( cust_income_level, instr( cust_income_level, '-') + 2 )) as cust_income_level
相反,对于orderby,可以添加前导零并使用该值来获得正确的顺序。如果有一个值不是数字,它会出现在结果中,但至少不会出现错误。
lpad( substr( cust_income_level, instr( cust_income_level, '-') + 2 ), 9, '0')
上面的示例将添加前导零,直到值为9个字符长“3”变为“00000000 3”“40”变为“0000000 40”等。对上述结果进行排序将导致varchar2数据类型中数字的正确排序。
hsgswve42#
如果要将数字放在字符串的末尾,可以使用:
select replace(regexp_substr(cust_income_level, '[0-9,]+$'), ',', '')
2条答案
按热度按时间vfwfrxfs1#
如果没有正则表达式,可以使用
如果要在order by中将其用作数字,可以使用function to \u number(),但这很容易出错,因为当值不是实际的数字值时,会出现错误。
相反,对于orderby,可以添加前导零并使用该值来获得正确的顺序。如果有一个值不是数字,它会出现在结果中,但至少不会出现错误。
上面的示例将添加前导零,直到值为9个字符长
“3”变为“00000000 3”
“40”变为“0000000 40”
等。
对上述结果进行排序将导致varchar2数据类型中数字的正确排序。
hsgswve42#
如果要将数字放在字符串的末尾,可以使用: