sql - 从 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
知道我应该怎么做吗?非常感谢您提前。
解决方案
假设您发布了您尝试执行的实际查询,我发现您在第 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
推荐阅读
- rust - 如何围绕借来的值实现新类型包装器?
- python - Flask 集成导致帧到字节的 OpenCV 问题
- excel - VBA for excel,包含条件
- php - Laravel 为什么我的下拉菜单在悬停时显示所有元素?
- swift - doesRelativeDateFormatting 不能在 swift 中为将来的日期工作
- python - unittest.TestCase setUpClass 覆盖和继承
- wpf - 来自 Mainwindow.xaml 的用户控件上的交互触发器不起作用
- sql - 如何使用字符串在 SQL 中创建一个范围,以便我可以将其用作排除条件?前任。选择不包括 A1 - A999 的数据
- java - 使用 Byte-Buddy 拦截 java.lang.Object wait(long) 本机方法
- php - 检查是否存在帖子标题