在雪花结果集中用逗号分隔输出数字

Posted

技术标签:

【中文标题】在雪花结果集中用逗号分隔输出数字【英文标题】:Output numbers with comma separation in snowflake result set 【发布时间】:2020-09-17 02:47:42 【问题描述】:

我正在 Snowflake 中处理 SQL 查询。我能够在浏览器 (chrome) 或 SQLWorkbenchJ 中工作。我对两者都很满意,但更喜欢浏览器。

我正在处理较大的数字,高达数千亿 (10^8),所以如果我可以让程序用逗号分隔打印我的数字,这将非常有帮助数以千计(例如 12,345,678,901.00 与 12345678901.00)。

我在这里查看了有关格式模型的文档 https://docs.snowflake.com/en/sql-reference/sql-format-models.html 但我看不到以我正在寻找的样式输出的选项。

除此之外,我真的更愿意将其实现为接口本身的配置,而不是我应用于查询的代码。

【问题讨论】:

它可能就像 Oracle,你必须在其中执行类似 '###,###,###,##0.00' 的操作。 【参考方案1】:

numeric format models 似乎可以通过9(九个)、,(逗号)和.(句点)符号满足您的需求。引用文档中的一些相关部分:

9:一个数字的位置;前导/尾随零替换为空格。

0:一个数字的位置;显式打印前导/尾随零。

.(句点):小数分隔符;总是打印为句点。

,(逗号):数字组分隔符;打印为逗号或空格。

[...]

如果数字足够大,数字组分隔符,(逗号)或G 会打印相应的组分隔符,因此数字位于组分隔符的两侧。用于打印货币总和的格式模型的一个示例是 999,999.00。

以下是一些经过改编的示例,展示了所需的格式:

SELECT to_varchar(123.21, '999,999,999,999.00');
SELECT to_varchar(12345.00, '999,999,999,999.00');
SELECT to_varchar(12345678, '999,999,999,999.00');
SELECT to_varchar(12345678901, '999,999,999,999.00');
SELECT to_varchar(12345678901.59, '999,999,999,999.00');

【讨论】:

【参考方案2】:

看来你的愿望已经部分实现了!

在 Snowflake 的新 Web 界面(他们称之为 Snowsight)中,您可以选择使用逗号作为千位分隔符来显示数字。

它只影响 UI 中的显示 - 它不适用于导出数据(这应该不是问题,因为导出的数据不应该被格式化 - 这是 excel 或其他可以处理的事情)。

【讨论】:

以上是关于在雪花结果集中用逗号分隔输出数字的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔

Python - 从文本文件中读取逗号分隔值,然后将结果输出到文本文件[关闭]

在文本文件中使用逗号分隔值打印输出

在 MYSQL 上替换逗号分隔结果上的数字

SQL中逗号分隔的查询结果转换成单个字符串放到in语句里

PL SQL从用逗号分隔的字符串创建数字数组[重复]