BigQuery Sandbox支持CASE语句吗?执行时遇类型匹配错误求助
BigQuery Sandbox对CASE语句的支持及SQL报错排查解决
关于BigQuery Sandbox对CASE语句的支持
BigQuery Sandbox完全支持CASE语句,它是标准SQL的核心语法之一,Sandbox环境与正式BigQuery环境在SQL语法支持上没有差异,可正常使用CASE进行条件逻辑处理。
报错原因及解决方案
报错原因
报错信息:
No matching signature for operator CASE; all THEN/ELSE arguments must be coercible to a common type but found: BOOL, STRING; actual argument types (WHEN THEN) ELSE: (BOOL BOOL) STRING at [3:2]
问题出在CASE语句的返回类型不一致:
THEN分支的表达式name = 'Devdas Sloan'是布尔判断,返回TRUE或FALSE(布尔类型)ELSE分支直接返回name字段,属于字符串类型
CASE语句要求所有分支返回的数据类型必须可转换为同一类型,类型不匹配就会触发该错误。
修正后的SQL
如果你的需求是将name为'Devadas Sloan'的记录替换为'Devdas Sloan',否则保留原名称,正确写法如下:
SELECT customer_id, CASE WHEN name = 'Devadas Sloan' THEN 'Devdas Sloan' ELSE name END AS new_name FROM `valid-cell-380712.customer_table_gda.customer_table`
内容的提问来源于stack exchange,提问作者Gayatri Sood
相关产品推荐
相关产品推荐

