在Bigquery教程中,提到了一个示例: 在noaa_gsod数据集下,有几个表名为gsod1991,gsod1992,gsod1993 .... gsod2018。 我们使用_table_suffix过滤器编写查询
foo.env
在gsod2018中,有一个字符串和gsod后的四位用作_TABLE_SUFFIX进行比较。 但是,为什么要在2015年之后的任何一年使用字符串比较? 当我们想要获得2015年之后的表格时,数字比较不是字符串比较吗?
答案 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 |
+------+-------------------+-------------------+