mysql - 格式化字符串,每 3 位数字之间有一个小数分隔符
问题描述
在 MySQL 数据库中,我有一个类似123456789
. 我想在每 3 位数字之间添加一个小数分隔符,从而将其转换为123.456.789
.
我怎样才能做到这一点?
解决方案
如果您使用的是 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 所说,最好在客户端部分处理此字符串操作,它将在每个客户端执行之间进行划分。
推荐阅读
- java - Kafka 消费者无法连接时快速失败
- kotlin - Kotlin Exposed 获取更新的行数
- python - 获得两个字符串(在python中)之间对称差异的最佳有效方法是什么?
- jenkins - Jenkins Ansibe 插件无法通过 ssh 连接到主机:权限被拒绝(公钥、密码)
- javascript - 如何在 data-grid 组件 column 组件中添加 Edit material-ui 图标
- c# - EF Core 5,在子集合中按日期排序实体
- spring-boot - Spring Boot cron 表达式,每 2 个月
- angular - Socket.io 在 Angular 应用程序中断开连接并重新连接
- java - 将 Srping Boot 更新到 2.4.2 后捕获“负载均衡器没有可用于客户端的服务器”
- elasticsearch - 查询格式错误,简单查询中查询名称后没有 start_object