首页 > 解决方案 > 格式化字符串,每 3 位数字之间有一个小数分隔符

问题描述

在 MySQL 数据库中,我有一个类似123456789. 我想在每 3 位数字之间添加一个小数分隔符,从而将其转换为123.456.789.

我怎样才能做到这一点?

标签: mysqlsql

解决方案


如果您使用的是 MySQL 8.0+,则可以使用该REGEXP_REPLACE功能:

SELECT REGEXP_REPLACE(YOUR_COLUMN, '([:digit:]{3})(?!$)', '$0.');

它为每组 3 位数字添加一个点,最后一位除外。这里有些例子:

123456789返回123.456.789

1234567891返回123.456.789.1

12345678910返回123.456.789.12

您可以在这个DB Fiddle上尝试一下,您可以更改正则表达式以适应您的需要。

但是,就性能而言,这种方法可能不是最好的。如果您的查询被多次调用,您的数据库服务器将受到影响,因为计算集中在它上面。正如@xNoJustice 所说,最好在客户端部分处理此字符串操作,它将在每个客户端执行之间进行划分。


推荐阅读