在 CASE 语句中使用 CHARINDEX 和 SUBSTRING

Using CHARINDEX and SUBSTRING in a CASE statement

我需要使用 CASE 语句评估字段。字段名称是 Commodity,是一个 varchar(255)。这些值不同,我需要在特定字符后从中提取特定部分。该字符是一个“>”。通过使用以下代码,我能够在 > 之后得到我想要 returned 的值:

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

但是我不确定如何将它应用到我的 CASE 语句中。我需要测试 Is Null,然后只给它赋值 'No Commodity'。然后我需要测试 > 的存在,然后将上面的代码实现为 return 该值。然后我需要测试什么时候没有 > 但它不为 null 而只是 return Commodity 字段的值。

你只需要在 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