【问题标题】:_TABLE_SUFFIX string comparisonwith integer_TABLE_SUFFIX 字符串比较与整数
【发布时间】:2018-12-10 14:58:37
【问题描述】:

在 Bigquery 教程中,有一个例子提到: 在 noaa_gsod 数据集下有几个名为 gsod1991,gsod1992,gsod1993....gsod2018 的表。 我们使用 _table_suffix 过滤器编写查询

SELECT *  from `bigquery-public-data.noaa_gsod.gsod*` WHERE _TABLE_SUFFIX >'2015'

其中gsod2018是一个字符串,gsod后面的四位数字用作_TABLE_SUFFIX进行比较。 但是为什么在 2015 年之后的任何一年都使用字符串比较呢? 当我们想得到 2015 年后的表时,那不是数字比较而不是字符串比较吗?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    当我们想得到 2015 年后的表时,那不是数字比较而不是字符串比较吗?

    将年份作为字符串还是数字进行比较没有区别,除非您比较的是 1000 年之前或 9999 年之后的年份,因为从那时起,年份的位数不同。举个例子:

    SELECT
      year,
      year > 2015 AS number_is_greater,
      CAST(year AS STRING) > '2015' AS string_is_greater
    FROM UNNEST(GENERATE_ARRAY(2010, 2020)) AS year;
    
    +------+-------------------+-------------------+
    | year | number_is_greater | string_is_greater |
    +------+-------------------+-------------------+
    | 2010 |             false |             false |
    | 2011 |             false |             false |
    | 2012 |             false |             false |
    | 2013 |             false |             false |
    | 2014 |             false |             false |
    | 2015 |             false |             false |
    | 2016 |              true |              true |
    | 2017 |              true |              true |
    | 2018 |              true |              true |
    | 2019 |              true |              true |
    | 2020 |              true |              true |
    +------+-------------------+-------------------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多