sql - 如何在 Google BigQuery 中执行 "safe"SPLIT?

标签 sql google-bigquery

Google BigQuery 上的以下代码抛出索引越界错误。

SELECT 
  SPLIT(CONCEPT_CKI, "!")[OFFSET(0)] AS Standard_Name
  ,SPLIT(CONCEPT_CKI, "!")[OFFSET(1)] AS Standard_Code

FROM 
(
      SELECT "MULTUM!123" AS CONCEPT_CKI
      UNION ALL
      SELECT "MULTUM234" AS CONCEPT_CKI

)

我们希望拆分在它可以处理的字段上工作 - 并且在它不能处理时简单地为第二个字段生成 NULL 值。 (即,有点类似于 SAFE_CAST 命令在无法进行转换时给出 NULL 的方式。)

我们如何对 Google BigQuery 中的字段进行“安全”SPLIT?

最佳答案

在下面的示例中使用 SAFE_OFFSET

SELECT 
  SPLIT(CONCEPT_CKI, "!")[OFFSET(0)] AS Standard_Name
  ,SPLIT(CONCEPT_CKI, "!")[SAFE_OFFSET(1)] AS Standard_Code

FROM 
(
      SELECT "MULTUM!123" AS CONCEPT_CKI
      UNION ALL
      SELECT "MULTUM234" AS CONCEPT_CKI

)   

有输出

Row Standard_Name   Standard_Code    
1   MULTUM          123  
2   MULTUM234       null       

而不是 Array index 1 is out of bounds (overflow) for original query

关于sql - 如何在 Google BigQuery 中执行 "safe"SPLIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60877820/

相关文章:

sql - Bigquery ORDER BY(计数)

python-3.x - BigQuery 更新如何获取更新的行数

sql - CREATE OR REPLACE VIEW sql错误

MySQL:搜索从昨天下午 3 点到今天下午 4 点的订单

mysql - 是否有更简洁的 SQL 查询来将两个值与单个可能性列表进行匹配?

sql - 我如何计算一个月内不在前一个月的用户数?

sql - 在 Bigquery 中编写递归查询的最简单方法

regex - Google BigQuery 可以做不区分大小写的 REGEXP_Match 吗?

WHERE 子句中的 SQL Server 浮点

php - 需要 future 7 天内包含日期的所有 MySQL 行,但日期列的格式不正常