在Bigquery中:我们如何格式化一个数字,该数字将成为结果集的一部分,使其以逗号格式化:如1000000到1,000,000?
Mik*_*ant 10
下面是标准SQL
SELECT
input,
FORMAT("%'d", input) as formatted
FROM (
SELECT 123 AS input UNION ALL
SELECT 1234 AS input UNION ALL
SELECT 12345 AS input UNION ALL
SELECT 123456 AS input UNION ALL
SELECT 1234567 AS input UNION ALL
SELECT 12345678 AS input UNION ALL
SELECT 123456789 AS input
)
Run Code Online (Sandbox Code Playgroud)
适用于整数,但如果你也需要花车,你可以使用:
SELECT
input,
CONCAT(FORMAT("%'d", CAST(input AS int64)),
SUBSTR(FORMAT("%.2f", CAST(input AS float64)), -3)) as formatted
FROM (
SELECT 123 AS input UNION ALL
SELECT 1234 AS input UNION ALL
SELECT 12345 AS input UNION ALL
SELECT 123456.1 AS input UNION ALL
SELECT 1234567.12 AS input UNION ALL
SELECT 12345678.123 AS input UNION ALL
SELECT 123456789.1234 AS input
)
Run Code Online (Sandbox Code Playgroud)
为旧版SQL添加
顺便说一句,如果由于某种原因你被绑定到Legacy SQL - 下面是它的快速示例
SELECT input, formatted
FROM JS((
SELECT input
FROM
(SELECT 123 AS input ),
(SELECT 1234 AS input ),
(SELECT 12345 AS input ),
(SELECT 123456 AS input ),
(SELECT 1234567 AS input ),
(SELECT 12345678 AS input ),
(SELECT 123456789 AS input)
),
// input
input,
// output
"[
{name: 'input', type:'integer'},
{name: 'formatted', type:'string'}
]",
// function
"function (r, emit) {
emit({
input: r.input,
formatted: r.input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
});
}"
)
Run Code Online (Sandbox Code Playgroud)
以上示例使用Legacy SQL用户定义函数的内联版本,通常用于快速演示/示例 - 但不建议在生产中使用 - 如果您发现它对您有用 - 您将需要"非常轻微地"转换它 - 例如,请参阅https://cloud.google.com/bigquery/user-defined-functions#webui
使用标准 SQL:
SELECT FORMAT("%'d", 1000123)
1,000,123
Run Code Online (Sandbox Code Playgroud)
启用标准 SQL 的说明:https : //cloud.google.com/bigquery/sql-reference/enabling-standard-sql
归档时间: |
|
查看次数: |
4684 次 |
最近记录: |