0

我有一个没有关系的表。当字段countyName 是零长度字符串时,我需要Statewide在结果集中。否则,我需要该字段的值保持原样,例如:在此处输入图像描述注意第二列中如何存在“Statewide”和“countyName”。CountyName 应该是实际存储在数据库中的原始值。

`countyName`  `address`
               blah blah
Jackson        blah blah

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

countyName     address
Statewide      blah blah
Jackson        blah blah

这是我尝试过的,您可以忽略此示例中的其余字段

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
4

5 回答 5

5

尽管没有确切说明您期望的结果,但我的猜测是您不想返回“县名”的文字。你想要的是列中的值。

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

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

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

,case ISNULL(countyName,'')
when '' then 'Statewide'
else countyName end
于 2012-10-08T12:45:34.297 回答
1

试试这个:

case when isnull(countyName,'') = '' then 'Statewide' else countyname end
于 2012-10-08T12:46:29.937 回答
0

我猜您正在寻找“IFNULL”功能。

只需以这种方式使用它:SELECT ...,ISNULL( column, "fallback value" ),...在您的情况下

于 2012-10-08T12:45:02.510 回答
0

试试这个... IsNULL 应该检查。

case ISNULL(countyName,'') when '' then 'Statewide' else 'countyname' end

于 2012-10-08T12:53:06.327 回答
0
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;

于 2013-05-16T05:40:07.957 回答