_TABLE_SUFFIX字符串比较与整数

时间:2018-12-10 14:58:38

标签: google-bigquery

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

foo.env

在gsod2018中,有一个字符串和gsod后的四位用作_TABLE_SUFFIX进行比较。 但是,为什么要在2015年之后的任何一年使用字符串比较? 当我们想要获得2015年之后的表格时,数字比较不是字符串比较吗?

1 个答案:

答案 0 :(得分: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 |
+------+-------------------+-------------------+