首页 > 解决方案 > 从 CASE WHEN 转换为 INT64

问题描述

下午好。我有一个表,其中所有列都是字符串格式。为了澄清,“null”是一个字符串,而不是表中的空值。

安装日期 app_id 价值 收入
2021-01-01 id12345 0 '空值'
2021-01-02 id12345 '空值' 0
2021-01-03 id12345 1 5

我必须做两件事:将“null”字符串转换为 0,然后将其转换为 int64。我在下面有一个查询,但我收到与我的语法有关的错误:语法错误:意外 ")

SELECT 
install_date, 
app_id, 
cast((case when value = 'null' then '0' else value) as int64) as value
cast((case when revenue = 'null' then '0' else revenue) as int64) as revenue

知道我应该怎么做吗?非常感谢您提前。

标签: sqlcastinggoogle-bigquery

解决方案


假设您发布了您尝试执行的实际查询,我发现您在第 4 行的语句和afterEND中都缺少关键字。CASE,value

SELECT
    install_date,
    app_id,
    CAST((CASE value WHEN 'null' THEN '0' ELSE value END) AS int64) AS value,
    CAST((CASE revenue WHEN 'null' THEN '0' ELSE revenue END) AS int64) AS revenue
FROM
    DATA

推荐阅读