如何从 BigQuery 结果中去除非数字字符

Posted

技术标签:

【中文标题】如何从 BigQuery 结果中去除非数字字符【英文标题】:How to strip non-numeric characters from BigQuery results 【发布时间】:2017-10-23 20:21:09 【问题描述】:

我已经看到有关如何在 BigQuery 中将 add commas 转换为数字的信息,但我得到的是美元金额结果

$15,000
$25,000
$10,000

我想转换成纯数字

15000
25000
10000

我没有找到任何 BigQuery 函数来进行这样的格式更改。

【问题讨论】:

【参考方案1】:

许多不同的方式 - 例如下面的一个使用正则表达式来删除 $, 字符

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '$15,000' AS dollar_amount UNION ALL
  SELECT '$25,000' UNION ALL
  SELECT '$10,000' 
)
SELECT 
  dollar_amount, 
  CAST(REGEXP_REPLACE(dollar_amount, r'\$|,', '') as INT64) amount
FROM `project.dataset.table`

【讨论】:

另一个想法是使用REGEXP_EXTRACT_ALL[0-9]+,然后使用ARRAY_TO_STRING 将输出连接为更通用的解决方案,以防有其他无关字符。 或只是 CAST(REGEXP_REPLACE(dollar_amount, r'[^0-9.]', '') AS INT64) 以避免额外的 ARRAY 相关内容 这很棒。出于某种原因,它无法识别我想要转换为的任何 INT 类型,但即使在其自身上完美地执行 REGEXP_REPLACE() 也是如此。无论如何,当我传递数据时,它都会以数字的形式被读入。 如果你使用INT - 你应该使用'INT64'。同时 - 如果您的金额有小数 - 您应该使用 FLOAT64 而不是 INT64

以上是关于如何从 BigQuery 结果中去除非数字字符的主要内容,如果未能解决你的问题,请参考以下文章

如何从字符串中去除非 ASCII 字符? (在 C# 中)

BigQuery json 特殊字符 UI 导出问题

在 Oracle SQL 中去除非英文字符

从 BigQuery 数据查询中查询名为 chartio 的 BI 工具时,最大数据大小是多少?

从BigQuery数据查询中查询名为chartio的BI工具时的最大数据大小是多少?

如何避免 BigQuery 中的 Power BI 增量刷新重复查询?