2016-05-08 112 views
1

我在兩年前見過another post關於可能的FORMAT_STRING。我正在尋找這樣的東西,所以如果我有一個字符串,如123456789,我可以將其格式化爲包含適當的逗號,所以它看起來像123,456,789有沒有工作FORMAT_STRING或TEXT函數?

在Google表格中有一個TEXT功能,可以進行各種格式化。如果我在Google表格中這樣做,我可以做,=TEXT("123456789", "#,##0")。是否有函數或計劃具有可啓用文本格式的功能,例如Google Sheets TEXT函數中的內容?當我創建報告並需要將FLOAT或INTEGER數據格式化爲字符串以便與其他字段連接時,在許多情況下這會派上用場,但仍然在適當的位置保留逗號或百分比。

回答

4

的時候我真的需要這樣做(創建報表)whithin的BigQuery中,我使用下面的方法(簡化的例子)

SELECT input, output FROM JS(
// input table 
(
    SELECT input FROM 
    (SELECT 123 AS input), 
    (SELECT 1234 AS input), 
    (SELECT 12345 AS input), 
    (SELECT 123456.1 AS input), 
    (SELECT 1234567.12 AS input), 
    (SELECT 12345678.123 AS input), 
    (SELECT 123456789.123 AS input) 
), 
// input columns 
    input, 
// output schema 
"[ 
    {name: 'input', type: 'float'}, 
    {name: 'output', type: 'string'} 
]", 
// function 
"function(r, emit){ 
    emit({ 
    input: r.input, 
    output: r.input.toFixed(2).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,') 
    }); 
}" 
) 

順便說一下,在最近推出的標準SQL方言 - 您可以使用FORMAT()功能。
像下面的例子。
不要忘了取消Use Legacy SQL顯示選項複選框

SELECT 
    input, 
    FORMAT("%'d", input) AS output 
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)) 
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 
) 
+0

謝謝你,米哈伊爾。不幸的是'FORMAT'語法只能在傳統SQL模式下使用。這需要重寫現有報告和ETL作業才能使用此功能。雖然在這種模式下很好的瞭解這個功能。 –