SQL语句报错:‘as’关键字附近语法不正确,求问题排查
解决SQL中“‘as’关键字附近语法不正确”的报错
嘿,我一眼就瞅出你这段SQL的问题啦——嵌套的CASE语句没正确闭合,导致AS FieldValue的位置不符合语法规则,SQL引擎根本没法正确解析它!
先看你出错的核心片段:
CASE WHEN TRY_CONVERT(UNIQUEIDENTIFIER, tef.FieldValue) IS NOT NULL THEN lli.Name ELSE CASE WHEN tef.FieldDataType = 'BOOL' THEN CAST(tef.FieldValue AS BIT) ELSE tef.FieldValue END AS FieldValue
问题根源很明确:外层CASE的ELSE分支里嵌套了另一个CASE,但这个内层CASE写完后没加END闭合,SQL会误以为AS FieldValue是内层CASE的一部分,直接触发了语法错误。
修正后的SQL片段
SELECT tef.TicketEntryId, tef.FieldName, CASE WHEN TRY_CONVERT(UNIQUEIDENTIFIER, tef.FieldValue) IS NOT NULL THEN lli.Name ELSE CASE WHEN tef.FieldDataType = 'BOOL' THEN CAST(tef.FieldValue AS BIT) ELSE tef.FieldValue END -- 先闭合内层CASE END AS FieldValue -- 闭合外层CASE后再指定列别名 FROM TicketEntry.TicketExtendedField tef LEFT JOIN RefList.LookupListItem lli ON CAST(lli.LookupListItemId AS VARCHAR(36)) = tef.FieldValue WHERE tef.TicketEntr...
关键修正说明
- 给内层的CASE语句补充了
END,确保它先被正确闭合 - 外层CASE语句也用
END收尾后,再跟上AS FieldValue来指定列别名
调整后SQL的逻辑结构就清晰合规了,语法错误自然就解决啦!
内容的提问来源于stack exchange,提问作者Rani Radcliff
相关产品推荐
相关产品推荐

