我正在尝试在SQL Server 2008 R2中运行语句时得到这种情况。它一直说'>'符号在CHARINDEX
部分的语句时无效。
select
count(r.id) as request,
case r.servicelayer
when null then r.topic + '/IAL'
when '' then r.topic + '/IAL'
when CHARINDEX('/rssfeed1234/georss/SomMobile', i.URI_STEM) ***>*** 0 then 'Som Mobile'
else r.topic + '/' + r.servicelayer
end as [layername]
from iis_metrics.tblReportData as r
最佳答案
好吧,您正在以无效的方式混合使用CASE
的两种不同方式。
要么使用CASE (some column name)
,然后必须仅使用将应用于该列的某种条件。这在前两个子句中是可以的:WHEN NULL
或WHEN ''
(这是使用WHEN .. IS NULL
或WHEN ... = ''
的“简写”-但是,如果您开始使用此“简写”表示法,则需要在中使用它,所有 WHEN
子句)
但是在这种情况下,就像您在第三个子句中尝试的那样,您不能在您的WHEN....
子句中突然使具有完整的表达式。
这是或版本:您也可以只使用CASE
,然后每个WHEN
子句都有一个完整的表达式-尝试以下操作:
CASE
WHEN r.servicelayer IS NULL THEN r.topic + '/IAL'
WHEN r.servicelayer = '' THEN r.topic + '/IAL'
WHEN CHARINDEX('/rssfeed1234/georss/SomMobile', i.URI_STEM) > 0 THEN 'Som Mobile'
ELSE r.topic + '/' + r.servicelayer
END AS [layername]
现在应该可以使用-您的每个
WHEN
子句都包含一个完整表达式,因此该CASE
语句有效。
关于sql-server-2008 - charindex时的SQL Server案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486931/