2014-03-18 80 views
0

我想獲得這種情況下,當語句在SQL Server 2008 R2中工作。在CHARINDEX聲明部分的情況下,它總是說'>'符號無效。SQL Server案例當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 

回答

2

那麼,你在混合使用兩種不同的方式以無效的方式使用CASE

要麼您使用CASE (some column name),然後你必須使用只是一些條件適用該列。這是第一次兩個子句OK:WHEN NULLWHEN ''(這是不大不小的「手短」的使用WHEN .. IS NULLWHEN ... = '' - 但是如果你開始使用這種「手短」的符號,你需要在所有使用它你WHEN條款)

但在這種情況下,你不能突然有一個完整的表達你的WHEN....子句你你的第三個子句中嘗試。

這是OR版本:您也可以只使用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語句是有效的。