我需要一些关于SQL 中搜索 CASE WHEN
语句的处理顺序的信息。
例如:
(CASE
WHEN Cells.Type <> 'UOM' THEN 0
WHEN Template_Colors.Uom_Case = 'ONE' THEN 1
WHEN Template_Colors.Uom_Case = 'MUL' THEN 2
END) AS CELL_WHAT_UOM
我需要结果总是0
,除非Cells.Type <> 'UOM'
。
我知道 SQL 解析器通常从底部到顶部进行,但在 Oracle 中查询似乎工作正常,所以我认为WHEN
子句按它们的顺序处理。
100%保证先办案0
?
或者我不得不写:
(CASE
WHEN Cells.Type <> 'UOM' THEN 0
WHEN Cells.Type = 'UOM' AND Template_Colors.Uom_Case = 'ONE' THEN 1
WHEN Cells.Type = 'UOM' AND Template_Colors.Uom_Case = 'MUL' THEN 2
END) AS CELL_WHAT_UOM
...?
我需要有关 Oracle 10g + SQL server 2008 r2 + Postgre 的信息。