SQL Server 2008 - SQL 查询 - 关键字"LIKE"附近的语法不正确



以下查询在"不喜欢时的情况"(Msg 156,级别 15,状态 1,第 14 行)关键字"LIKE"附近的语法不正确)

SELECT     
 TimeStamp, 
 TimeStampNS, 
 ISNULL(TagName, 'NoTag') AS TagName, 
 Message, 
 ConditionName, 
 ISNULL(TagName, 'NoTag') + '.' + ConditionName AS Source, 
 CENTUMMsgId, 
 StationName,  
 ISNULL(AlarmLevel,5) AS AlarmLevel,
 ActiveTime, 
 ActorID, 
 ISNULL(AlarmOff,0) AS AlarmOff,
 CASE WHEN  NOT LIKE '% ACK%' AND CENTUMMsgId IN (4353, 4355, 4609) THEN 1 ELSE 0 END AS RaiseAll, 
    CASE WHEN  LIKE '% ACK%' THEN 1 ELSE 0 END AS Acknowledge, 
    CASE WHEN CENTUMMsgId IN (4354, 4356, 4358, 4614) AND Message NOT LIKE '% ACK%' THEN 1 ELSE 0 END AS Normal, 
 PlantHierarchy, 
 'EXAOPC' AS SourceType
FROM QHistorianData.dbo.vEXAOPCCSProcessAlarm

你们知道发生了什么吗...我想我在那里是正确的。

提前感谢您的任何帮助。

我想

你在这里错过了属性名称:

CASE WHEN <ATTRIBUTE-NAME> NOT LIKE '% ACK%' AND CENTUMMsgId IN (4353, 4355, 4609) THEN 1   ELSE 0 END AS RaiseAll, 
CASE WHEN  <ATTRIBUTE-NAME> LIKE '% ACK%' THEN 1 ELSE 0 END AS Acknowledge, 
CASE WHEN CENTUMMsgId ...
CASE WHEN **[MissingExpression]** NOT LIKE '% ACK%' AND CENTUMMsgId IN (4353, 4355, 4609) THEN 1 ELSE 0 END AS RaiseAll, 
CASE WHEN **[MissingExpression]** LIKE '% ACK%' THEN 1 ELSE 0 END AS Acknowledge, 
CASE WHEN CENTUMMsgId IN (4354, 4356, 4358, 4614) AND Message NOT LIKE '% ACK%' THEN 1
ELSE 0 END AS Normal, 
PlantHierarchy,

您错过了定义要与之比较的列,例如

WHEN 之后缺少列名/表达式。

CASE WHEN 'EXPRESSION'  NOT LIKE '% ACK%' 
     AND CENTUMMsgId IN (4353, 4355, 4609) 
     THEN 1 ELSE 0 END AS RaiseAll, 

相关内容

最新更新