2016-09-07 23 views

回答

5
下面

是標準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 
) 

的偉大工程的整數,但如果你也需要漂浮物,你可以使用:

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 
) 

增加了對傳統的SQL

順便說一句,如果出於某種原因,你一定會傳統的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,') 
    }); 
    }" 
) 

上面的例子使用IN-它通常用於快速演示/示例 - 但在生產中不推薦 - 如果您會發現它對您有用 - 您需要對其進行「非常輕微」的轉換 - 請參閱例如

+0

感謝您的詳細解答 –