在Google BigQuery中,以下情况是否可以帮助我? 我正在尝试确定名为Year(即-1999)的表列中是否存在负值。
我在网上搜索了很多类型的问题(包括StackOverflow)。通过所有这些,我发现可以使用CASE来完成。所以我写了下面的代码。
SELECT
CASE WHEN Year <0 THEN 1 ELSE 0 END
FROM `project.dataset.datatable`
但是不幸的是,运行代码时出现以下错误:
对于参数类型:STRING,INT64,运算符<没有匹配的签名。支持的签名:ANY 我认为这可能是因为Year列定义为STRING而不是INTEGER。因此,我尝试使用此代码将值格式化为INT。 代码可以正常工作,因为它显示了值。但是只有100个值,而不是标准SELECT DISTINCT显示的103个值。因此,这似乎是错误的。 (!)列名称和表名称,数据集名称和项目名称不是真实的。出于隐私限制,它们被我取代。 我希望查询显示所有负数年份(如果有)。
例如,如果Year列中包含-1999年(数据质量问题),则该字符串应将其向前,以及其他类似的字符串。SELECT
CAST(Year AS INT64) AS Year_INT
FROM `project.dataset.datatable`
答案 0 :(得分:1)
这将像您的描述一样工作
SELECT Year
FROM `project.dataset.datatable`
WHERE CAST(Year AS INT64) < 0
答案 1 :(得分:1)
您可以直接在字符串中搜索连字符,而不用将CASTing值设置为INT:
where year like '%-%'
这可能比铸造便宜。