首页 文章

BigQuery标准SQL:将值设置为正或负无穷大

提问于
浏览
1

我从docs for BigQuery Standard SQL Mathematical functions注意到我们可以测试一个使用 IS_INF() 函数的"is infinity"数字是这样的:

WITH demo_tbl AS (
  SELECT 1 AS val UNION ALL
  SELECT 100 AS val
)

SELECT 
  val,
  IS_INF(val) as is_infinity
FROM demo_tbl

哪个输出:

+---+-----+-------------+
|   | val | is_infinity |
+---+-----+-------------+
| 0 |   1 | False       |
| 1 | 100 | False       |
+---+-----+-------------+

但是有可能 explicitly 使用一些常数值或关键字将值设置为正或负无穷大?

也许是这样的:

WITH demo_tbl AS (
  SELECT 1 AS val UNION ALL
  SELECT +inf AS val -- <-- THIS doesnt work
)

SELECT 
  val,
  IS_INF(val) as is_infinity
FROM demo_tbl

为了给出类似于此的所需输出:

+---+-----+-------------+
|   | val | is_infinity |
+---+-----+-------------+
| 0 |   1 | False       |
| 1 | inf | True        |
+---+-----+-------------+

我尽可能地搜索了文档并且围绕着这个问题而谷歌,但无法找到答案 .

1 回答

  • 1

    您可以使用 cast() 创建值:

    select is_inf(cast('Infinity' as float64))
    

    要么:

    select is_inf(cast('inf' as float64))
    

    埋在_45253中的是:

    没有NaN或无穷大的文字表示,但以下不区分大小写的字符串可以显式转换为浮点数:“NaN”“inf”或“inf”“ - inf”

相关问题