在CASE语句中使用CHARINDEX和SUBSTRING

时间:2017-01-31 17:49:21

标签: sql-server sql-server-2012 substring case charindex

我需要使用CASE语句评估字段。字段名称为Commodity,是varchar(255)。值不同,我需要在特定字符后从中提取特定部分。角色是''。我能够在>之后想出我想要的值。使用以下代码:

SUBSTRING(Commodity, CHARINDEX('>', Commodity) + 2, LEN(Commodity))

但我不确定如何将其用于我的CASE声明。我需要测试Is Null,然后只为它指定一个“没有商品”的值。然后我需要测试是否存在>然后实现上面的代码以返回值。然后我需要测试什么时候没有>但它不是null,只返回商品字段的值。

1 个答案:

答案 0 :(得分:3)

您只需要在when子句中包含这三个条件。您可以使用charindex确保字符串中存在>字符:

CASE 
WHEN commodity IS NULL THEN 'No Comodity'
WHEN CHARINDEX('>', Commodity) > 0 THEN 
     SUBSTRING(commodity, CHARINDEX('>', commodity) + 2, LEN(commodity))
ELSE comodity
END