google-bigquery - 使用 case when 来识别 timestamp = 'null'
问题描述
我正在尝试在 BQ 中对名为 version_end_ts 的时间戳列构建一个 case when 语句。具体来说,我希望我的声明如下:
version_end_ts = 'null' then 'active' else 'past' end as status 的情况
问题是 BQ 告诉我它“无法将文字“null”转换为类型 TIMESTAMP”。如果时间戳丢失,有没有办法在我的情况下返回一个积极的标志?我搜索了高低,找不到这个答案。
预先感谢您的帮助。
布赖恩
解决方案
我找不到您的问题的确切副本,至少 BigQuery 找不到。在 BigQuery(以及大多数 SQL 风格)中,NULL
是一个特殊值,检查值的存在/不存在NULL
使用特殊运算符IS NULL
and IS NOT NULL
。所以你的CASE
表达应该是这样的:
CASE WHEN version_end_ts IS NULL THEN 'active' ELSE 'past' END AS status
我们需要使用IS NULL
而不是的原因=
是NULL
,根据定义,它代表一个未知的值。因此,将未知的事物与运算符进行比较是没有意义的=
,因为它永远不会是真的。
推荐阅读
- python - 提交和删除按钮在 Python 和 Kivy (ListItemButton) 中不起作用
- flash - 使用 Adobe Flash 开发电子学习内容的未来
- swift - Swift willSet/didSet 赋值?
- java - Spring JPA 数据:Eclipse 中的 Querydsl 在使用查询 dsl 类时给出编译错误
- c# - 基于属性值与 DrawingImage 的图像源绑定
- swift - 无法推断通用参数“S”
- jquery - 动态选择的依赖下拉菜单
- java - Vaadin 8 MessageBox 在 keyPress 上关闭
- java - Sonarqube - 包含被忽略
- javascript - 使用 Graph OAuth v2.0 刷新令牌