SQL Server 2008时的情况

woo*_*gie 0 sql case sql-server-2008

我有一张没有关系的单人桌子.当fieldNameName为零长度字符串时,我需要Statewide在结果集中.否则,我需要该字段的值保持不变,例如:在此输入图像描述请注意第二列中有"Statewide"和"countyName".countyName应该是实际存储在数据库中的原始值.

`countyName`  `address`
               blah blah
Jackson        blah blah
Run Code Online (Sandbox Code Playgroud)

需要(两个示例中的第一行是列名)

countyName     address
Statewide      blah blah
Jackson        blah blah
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的,你可以忽略这个例子中的其余字段

select case servicetype
       when 'cr' then 'Community Resource'
       when 'ed' then 'Education'
       when 'fb' then 'Faith-based'
       when 'me' then 'Medical Equipment'
       when 'hc' then 'Health Care'
       else 'Other' 
       end as serviceType

       ,case countyName
       when '' then 'Statewide'
       else 'countyname' end

       ,name
       ,physicaladdress
       ,city
       ,statelocation
       ,zip
       ,phone
       ,website
       from main

      order by countyName, servicetype, name
Run Code Online (Sandbox Code Playgroud)

fre*_*ler 5

尽管没有确切地说出你期望的结果,但我的猜测是你不想返回'countyname'的字面值.你想要的是列中的值.

所以尝试用......替换当前的case语句

,case countyName
when '' then 'Statewide'
else countyName end
Run Code Online (Sandbox Code Playgroud)

作为额外的安全网,您还可以NULL使用ISNULL... 来检查值.

,case ISNULL(countyName,'')
when '' then 'Statewide'
else countyName end
Run Code Online (Sandbox Code Playgroud)