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

QueryRecord组件CASE WHEN语句输出值含多余空格问题排查

问题描述

我有如下JSON文件:

[ {
  "id": 1
}, {
  "id": 2
} ]

同时存在属性ad.cost_type,当前值为0。我希望基于该属性修改JSON,于是在QueryRecord中编写了类SQL脚本:

SELECT
    CASE
    WHEN ${ad.cost_type} = 0 THEN 'cpc'
    WHEN ${ad.cost_type} = 1 THEN 'cpm'
    WHEN ${ad.cost_type} = 3 THEN 'ocpm'
END AS type
*
FROM FLOWFILE

执行后得到结果:

[ {
  "type" : "cpc ",
  "id": 1
}, {
  "type" : "cpc ",
  "id": 2
} ]

可见输出的type字段值后带有多余空格,不清楚该空格来源,请问遗漏了什么?

问题原因及解决方法
  • 字符串字面量含尾空格:你编写CASE语句时,'cpc'这类字符串的行尾可能不小心输入了空格——SQL引擎会将行尾的空白字符当作字符串的一部分解析,最终出现在结果中。建议检查并删除每个THEN子句字符串后的多余空格,确保'cpc'、'cpm'等内容后无空白再换行。
  • SELECT语句语法不规范:你的SELECT子句中,END AS type与*之间缺少逗号,这不符合SQL语法规范。虽然QueryRecord未直接报错,但异常的语法解析可能间接引发空格问题。正确写法应为:
SELECT
    CASE
    WHEN ${ad.cost_type} = 0 THEN 'cpc'
    WHEN ${ad.cost_type} = 1 THEN 'cpm'
    WHEN ${ad.cost_type} = 3 THEN 'ocpm'
END AS type,
*
FROM FLOWFILE

你也可以尝试将CASE语句压缩为一行,从根源避免行尾空格的影响:

SELECT CASE WHEN ${ad.cost_type}=0 THEN 'cpc' WHEN ${ad.cost_type}=1 THEN 'cpm' WHEN ${ad.cost_type}=3 THEN 'ocpm' END AS type, * FROM FLOWFILE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:42:44