【问题标题】:Using CHARINDEX and SUBSTRING in a CASE statement在 CASE 语句中使用 CHARINDEX 和 SUBSTRING
【发布时间】:2017-01-31 17:49:20
【问题描述】:

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

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

但是,我不确定如何将其应用到我的 CASE 语句中。我需要测试 Is Null,然后将其赋值为“No Commodity”。然后我需要测试是否存在 > 然后实现上面的代码来返回值。然后我需要测试什么时候没有 > 但它不为空,只返回 Commodity 字段的值。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 2013-08-15
      • 2012-01-08
      • 1970-01-01
      • 2012-11-15
      • 2015-12-15
      • 1970-01-01
      • 2017-07-28
      • 2013-05-29
      相关资源
      最近更新 更多