Sql 获取错误“;关键字'附近的语法不正确;as'&引用;
我得到这个错误: 关键字“as”附近的语法不正确 但我不知道问题出在哪里Sql 获取错误“;关键字'附近的语法不正确;as'&引用;,sql,sql-server,Sql,Sql Server,我得到这个错误: 关键字“as”附近的语法不正确 但我不知道问题出在哪里 SELECT tef.TicketEntryId, tef.FieldName, CASE WHEN TRY_CONVERT(UNIQUEIDENTIFIER, tef.FieldValue) IS NOT NULL THEN lli.Name ELSE CASE WHEN tef.F
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 AS FieldValue
FROM
TicketEntry.TicketExtendedField tef
LEFT JOIN
RefList.LookupListItem lli ON CAST(lli.LookupListItemId AS VARCHAR(36)) = tef.FieldValue
WHERE
tef.TicketEntryId = 'bc18a2e9-441f-433f-bd1f-ddb646758584'
抛出错误的行是
ELSE tef.FieldValue END as FieldValue
您结束了一个CASE
语句,而忘记结束另一个语句
更改此行:
ELSE tef.FieldValue END AS FieldValue
到
基本上,没有理由使用两种大小写表达式:
也就是说,此
案例
或您的版本存在键入问题。case
表达式返回一个值和一种类型。你为什么要把这个值作为一点来计算呢?大概案例
的预期返回类型是varchar()
,因此它永远不会返回位
值。但是,尝试转换可能会导致错误。非常感谢。我已经盯着那句话看了一段时间了。这是我的一个同事写的。有时,你需要的只是另一组眼睛。我没有编写代码,但它被转换到了一点,因为它是bool字段,需要是bool字段而不是字符串才能在DevExpress报告中使用复选框。这有很多要解释的。@RaniRadcliff。我只是说,案例
的结果有点小(因为cast()
),这可能会导致问题。
ELSE tef.FieldValue END END AS FieldValue
SELECT tef.TicketEntryId, tef.FieldName,
(CASE WHEN TRY_CONVERT(UNIQUEIDENTIFIER, tef.FieldValue) IS NOT NULL
THEN lli.Name
WHEN tef.FieldDataType = 'BOOL'
THEN CAST(tef.FieldValue AS BIT)
ELSE tef.FieldValue
END) as FieldValue
FROM TicketEntry.TicketExtendedField tef LEFT JOIN
RefList.LookupListItem lli
ON CAST(lli.LookupListItemId AS VARCHAR(36)) = tef.FieldValue
WHERE tef.TicketEntryId = 'bc18a2e9-441f-433f-bd1f-ddb646758584';