如何用一个点格式化一个数字的千

q0qdq0h2  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(384)

我正在寻找最好的方式来格式化从一个点数字数千。我正在从另一个表创建一个视图,我需要一些列具有这种格式。
例如:10000->10000
提前感谢您的回答!

f0brbegy

f0brbegy1#

没有自定义项是有办法做到的,但这可能是性能问题。但对于小型数据集,它是有效的:您可以使用以下内置函数组合:

// Template
select reverse(concat_ws(".",split(reverse(<column-to-format>),"(?<=\\G.{3})")));
// sample 1 - format number 12345678
select reverse(concat_ws(".",split(reverse("12345678"),"(?<=\\G.{3})")));
// sample 2 - format number 10000
select reverse(concat_ws(".",split(reverse("10000"),"(?<=\\G.{3})")));

编号为12345678的样品1的说明

1. reverse("12345678") Result: 87654321
2. split(reverse("12345678"),"(?<=\\G.{3})")")) Result: array [876,543,21]
3. concat_ws(".",split(reverse("10000"),"(?<=\\G.{3})")) Result "876.543.21"
4. finally reverse it back. Result: "12.543.876"

相关问题