首页 > 解决方案 > MySQL让它在case语句中识别0小于A

问题描述

如果 ladder_value_lh2 是 < 或 > ladder_value_lh1,我写了一个 case 语句返回:

    CASE
        WHEN ladder_value_lh1>ladder_value_lh2 THEN 'up'
        WHEN ladder_value_lh1< ladder_value_lh2 THEN 'down'
        WHEN ladder_value_lh2 IS NULL THEN 'No Change'
        END AS advocacy_moved_up_down_nochange,

阶梯值由 0、A、B、C1、C2、D 和 E 组成。

现在,它不承认 0 小于 A (等等)。因此,如果 ladder_value_lh1 为 0,并且小于 B 的 ladder_value_lh2,我预计会下降;现在,它正在返回“无变化”。

我如何告诉它 0 小于 A (等)?

谢谢

标签: mysqlsqlcase

解决方案


我建议你使用field()s:

(case sign(field(ladder_value_lh1, '0', 'A', 'B', 'C1', 'C2', 'D', 'E') - field(ladder_value_lh2, '0', 'A', 'B', 'C1', 'C2', 'D', 'E'))
      when 1 then 'up'
      when -1 then 'down'
      when 0 then 'no change'
      else 'null value'
 end)

推荐阅读