You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Snowflake Stream执行Merge语句时报错:'布尔值无法识别'问题排查

问题分析与修复方案

嘿,我一眼就揪出问题所在了!你的MERGE语句里的UPDATE子句写法有误,这才导致了那个看似奇怪的布尔值错误。

错误根源

在UPDATE的SET子句中,多个字段的赋值操作必须用**逗号(,)**分隔,而你误用了AND来连接。你当前的写法:

SET T.EMPNAME = S.EMPNAME AND T.EMPADD = S.EMPADD AND T.EMPSALARY = S.EMPSALARY

会被Snowflake错误解析成一个布尔逻辑判断——系统会认为你在验证这三个等式是否同时成立,结果是一个布尔值(TRUE/FALSE),但SET子句需要的是列赋值操作,而非布尔表达式,这就直接触发了'Boolean value is not recognized'的报错。

修正后的完整MERGE语句

把UPDATE部分的AND全部替换成逗号即可解决问题,下面是修正后的完整代码:

MERGE INTO "EMP_TEST_MAIN" AS T 
USING (
    select * from ST_EMP_TEST 
    where NOT (METADATA$ACTION ='DELETE' AND METADATA$ISUPDATE = TRUE)
) AS S 
ON T.EMPID = S.EMPID 
WHEN MATCHED AND S.METADATA$ACTION = 'INSERT' AND S.METADATA$ISUPDATE THEN 
    UPDATE SET 
        T.EMPNAME = S.EMPNAME,
        T.EMPADD = S.EMPADD,
        T.EMPSALARY = S.EMPSALARY 
WHEN MATCHED AND S.METADATA$ACTION = 'DELETE' THEN 
    DELETE 
WHEN NOT MATCHED AND S.METADATA$ACTION = 'INSERT' THEN 
    INSERT (T.EMPID, T.EMPNAME, T.EMPADD, T.EMPSALARY) 
    VALUES (S.EMPID, S.EMPNAME, S.EMPADD, S.EMPSALARY);

额外验证提示

执行修正后的语句后,你可以查询EMP_TEST_MAIN表确认数据是否正确同步,也可以通过SELECT * FROM ST_EMP_TEST;查看流的处理状态,确保没有残留未处理的变更记录。

内容的提问来源于stack exchange,提问作者MKS_AWS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:52:30