根据变量动态设置SQL查询列失败,求排查错误原因
问题分析与修正
你的SQL语句错误出在CASE表达式的语法上:
ELSE分支不能搭配THEN使用,它是默认分支,直接返回对应值即可- 你原本想判断
@variable1 = 'Foo3'的情况,应该用WHEN而不是ELSE
修正后的代码如下:
SET @variable1 = 'Foo1' SELECT CASE WHEN @variable1 = 'Foo1' THEN MY_TABLE.FIELD1 WHEN @variable1 = 'Foo2' THEN MY_TABLE.FIELD2 WHEN @variable1 = 'Foo3' THEN MY_TABLE.FIELD3 END AS FIELD_TO_SELECT, MY_TABLE.ANOTHER_FIELD_NAME FROM MY_TABLE WHERE ID = 'Something';
额外说明:如果@variable1的值不在Foo1/Foo2/Foo3范围内,CASE会返回NULL。如果需要处理这种场景,可以在最后添加ELSE分支指定默认返回值,比如ELSE '无匹配值'或其他字段。
内容的提问来源于stack exchange,提问作者8oris
相关产品推荐
相关产品推荐

