将数字转换为小数精度为 3 的数字的正则表达式

Regular expression for turning number into number with decimal precision of 3

我有一列数值,其中最后 3 位实际上应该在小数点后面。

例如

我需要一个将小数点放在最后 3 位数字之前的正则表达式:

我正在使用 REGEXP_REPLACE 函数来更改值的格式,但我找不到执行此操作的方法。是否可以编写这样的正则表达式并用它来替换值格式?

如果你想使用正则表达式来实现这一点,那么你可以使用这样的正则表达式:

(\d*)(\d{3})

Working demo

根据 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()

Tony Andrews

提出的解决方案
colval / 1000