如何使用此示例执行嵌套大小写?

时间:2014-08-26 14:32:40

标签: sql-server-2008 case case-when

我需要在下面的案例中加上一个案例来检查它们中是否有任何一个='UNRESTICTED',这是我什么时候做的事情

Select 
UPPER(CASE table.productnames 
    WHEN 'product1' THEN TABLE.SOMEPRODUCT1_name
    WHEN 'product2' THEN TABLE.SOMEPRODUCT2_name
    WHEN 'product3' THEN TABLE.SOMEPRODUCT3_name 
    WHEN 'product4' THEN TABLE.SOMEPRODUCT4_name
    WHEN 'product5' THEN TABLE.SOMEPRODUCT5_name
    WHEN 'product6' THEN TABLE.SOMEPRODUCT6_name
    WHEN 'product7' THEN TABLE.SOMEPRODUCT7_name
    WHEN 'product8' THEN TABLE.SOMEPRODUCT8_name
    WHEN 'product9' THEN TABLE.SOMEPRODUCT9_name
    END)

我试过了

WHEN 'product1' THEN TABLE.SOMEPRODUCT1_name WHEN 'UNRESTRICTED' THEN 'NEWNAME'

对于每一行,但必须有一种方法,我可以使用嵌套的案例,以允许它检查所有可能的产品名称,并检查它们是否等于'UNRESTRICTED'或由于每个产品是不同的,这是不可能的表中的字段?

2 个答案:

答案 0 :(得分:0)

Select 
UPPER(CASE table.productnames 
    WHEN 'product1' THEN TABLE.SOMEPRODUCT1_name
    WHEN 'product2' THEN TABLE.SOMEPRODUCT2_name
    WHEN 'product3' THEN TABLE.SOMEPRODUCT3_name 
    WHEN 'product4' THEN TABLE.SOMEPRODUCT4_name
    WHEN 'product5' THEN TABLE.SOMEPRODUCT5_name
    WHEN 'product6' THEN TABLE.SOMEPRODUCT6_name
    WHEN 'product7' THEN TABLE.SOMEPRODUCT7_name
    WHEN 'product8' THEN TABLE.SOMEPRODUCT8_name
    WHEN 'product9' THEN TABLE.SOMEPRODUCT9_name
    WHEN 'UNRESTRICTED' THEN 'NEWNAME'
END)

您不需要为每个案例添加一行,请先查看案例陈述的文档:http://msdn.microsoft.com/en-us/library/ms181765.aspx

答案 1 :(得分:0)

你可以这样做:

Select 
REPLACE(UPPER(CASE table.productnames 
    WHEN 'product1' THEN TABLE.SOMEPRODUCT1_name
    WHEN 'product2' THEN TABLE.SOMEPRODUCT2_name
    WHEN 'product3' THEN TABLE.SOMEPRODUCT3_name 
    WHEN 'product4' THEN TABLE.SOMEPRODUCT4_name
    WHEN 'product5' THEN TABLE.SOMEPRODUCT5_name
    WHEN 'product6' THEN TABLE.SOMEPRODUCT6_name
    WHEN 'product7' THEN TABLE.SOMEPRODUCT7_name
    WHEN 'product8' THEN TABLE.SOMEPRODUCT8_name
    WHEN 'product9' THEN TABLE.SOMEPRODUCT9_name
    END)
,'UNRESTRICTED','NEWNAME')