R连接BigQuery用WHERE查询指定ID_UNIQUE返回空结果如何解决
问题修复方案
核心原因
你编写的SQL查询语句中,ID_UNIQUE匹配的目标值前后多了多余的空格,和表中实际存储的无空格值FIGUEIRAS040C无法匹配,导致返回结果为空。
修复方法
方法1:直接修正原生SQL语句
去掉目标值前后的多余空格即可:
# 修正后SQL,移除引号内的前后空格 sqlInput <- "SELECT * FROM CF_2021 WHERE ID_UNIQUE = 'FIGUEIRAS040C'" stands_sel <- dbGetQuery(bq_conn_stands, sqlInput, stringsAsFactors = T)
方法2:使用dplyr语法查询(更推荐)
不需要手动拼写SQL,适配你已经加载的tidyverse生态,减少语法错误概率:
stands_sel <- stands_bq %>% filter(ID_UNIQUE == "FIGUEIRAS040C") %>% collect()
兜底排查方案
如果修正后仍返回空结果,可能是表中存储的ID_UNIQUE值存在不可见的首尾空格,可以用TRIM函数清洗后再匹配:
# 清洗字段两端空格后匹配 sqlInput <- "SELECT * FROM CF_2021 WHERE TRIM(ID_UNIQUE) = 'FIGUEIRAS040C'" stands_sel <- dbGetQuery(bq_conn_stands, sqlInput, stringsAsFactors = T)
内容的提问来源于stack exchange,提问作者Leprechault
相关产品推荐
相关产品推荐

