sql:从字符串字段中提取数字

v64noz0r  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(765)

为有多种情况的客户报告。
结果必须包含“收入水平上限”-收入水平的上限 'cust_income_level' 列。 'cust_income_level' 例如,字段具有类似的内容: ‘G: 130,000 - 149,999’ . 如何仅提取 149999 转换成整数?

vfwfrxfs

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数据类型中数字的正确排序。

hsgswve4

hsgswve42#

如果要将数字放在字符串的末尾,可以使用:

select replace(regexp_substr(cust_income_level, '[0-9,]+$'), ',', '')

相关问题