将数字转换为小数精度为 3 的数字的正则表达式
Regular expression for turning number into number with decimal precision of 3
我有一列数值,其中最后 3 位实际上应该在小数点后面。
例如
- 89302500
- 1260840
- 218580
我需要一个将小数点放在最后 3 位数字之前的正则表达式:
- 89302.500
- 1260.840
- 218.580
我正在使用 REGEXP_REPLACE
函数来更改值的格式,但我找不到执行此操作的方法。是否可以编写这样的正则表达式并用它来替换值格式?
如果你想使用正则表达式来实现这一点,那么你可以使用这样的正则表达式:
(\d*)(\d{3})
根据 documentation,您可以这样做:
SELECT
REGEXP_REPLACE(phone_number,
'([[:digit:]]*)([[:digit:]]{3})',
'.') "REGEXP_REPLACE"
FROM employees;
您不对数字使用正则表达式。如果你想要一个精度为 3 的 number:
select cast(col / 1000 as number(18, 3))
如果您希望将其表示为字符串,请在 col / 1000
上使用 to_char()
。
提出的解决方案
colval / 1000
我有一列数值,其中最后 3 位实际上应该在小数点后面。
例如
- 89302500
- 1260840
- 218580
我需要一个将小数点放在最后 3 位数字之前的正则表达式:
- 89302.500
- 1260.840
- 218.580
我正在使用 REGEXP_REPLACE
函数来更改值的格式,但我找不到执行此操作的方法。是否可以编写这样的正则表达式并用它来替换值格式?
如果你想使用正则表达式来实现这一点,那么你可以使用这样的正则表达式:
(\d*)(\d{3})
根据 documentation,您可以这样做:
SELECT
REGEXP_REPLACE(phone_number,
'([[:digit:]]*)([[:digit:]]{3})',
'.') "REGEXP_REPLACE"
FROM employees;
您不对数字使用正则表达式。如果你想要一个精度为 3 的 number:
select cast(col / 1000 as number(18, 3))
如果您希望将其表示为字符串,请在 col / 1000
上使用 to_char()
。
colval / 1000