在我的查询中收到错误。
case WHEN (I.stackoverflow in 'VBA', 'SQL')
THEN replace(I.superuser, '~', '.')
WHEN (I.stackoverflow in 'Java', 'design')
THEN substr(position_name, (instr(position_name, '_')+2), (len(position_name)-instr(position_name, '_')))
WHEN (I.stackoverflow in 'finance')
THEN ((position_name||'.')||currency)
WHEN (I.stackoverflow in 'philosophy', 'gaming')
THEN ((blah||'.')||currency)
WHEN (I.stackoverflow in 'personal finance')
THEN cast('text', money)
ELSE replace(I.superuser, '~', '.')
END AS stackexchange
如果我评论出THEN
我在WHEN上出现错误(出现在我之后)
错误是:
SQLState: 42601
ErrorCode: 4856
到目前为止,我已经改变了包围方式。在VBA
上出现错误,现在I.superuser
在我的查询中是红色的。
更新:
case WHEN I.stackoverflow in ('VBA', 'SQL')
THEN replace(I.superuser, '~', '.')
WHEN I.stackoverflow in ('Java', 'design')
THEN substr(position_name, (instr(position_name, '_')+2), (len(position_name)-instr(position_name, '_')))
WHEN I.stackoverflow in ('finance')
THEN ((position_name||'.')||currency)
WHEN I.stackoverflow in ('philosophy', 'gaming')
THEN ((blah||'.')||currency)
WHEN I.stackoverflow in ('personal finance')
THEN cast('text', money)
ELSE replace(I.superuser, '~', '.')
END AS stackexchange
您的CASE语句缺少ELSE和END:
select
case when I.Stack in ('VBA','SQL','Excel')
THEN replace (I.Overflow, '~', '.')
ELSE <what do you want to do when your case isn't true?>
END
AS <it helps to have a column alias for logic like this>
FROM
sometable AS I
如果您正确缩进代码,很容易理解代码无法正常工作的原因。
select
case
when I.Stack in ('VBA','SQL','Excel') THEN replace (I.Overflow, '~', '.')
end -- missing