在Access(或Jet,就此而言)中,Oracle的decode()是否具有等效项。
我面临的问题是:我应该基本上根据状态和日期(所有记录的状态均为2)对结果集进行排序(排序)。
在甲骨文中,我会像
select ... from ... where .. order by decode(status, 2, 0, 1), date_column
最接近的类比是SWITCH()函数,例如
SWITCH()
甲骨文:
SELECT supplier_name, decode(supplier_id, 10000, 'IBM', 10001, 'Microsoft', 10002, 'Hewlett Packard', 'Gateway') result FROM suppliers;
访问数据库引擎
SELECT supplier_name, SWITCH(supplier_id = 10000, 'IBM', supplier_id = 10001, 'Microsoft', supplier_id = 10002, 'Hewlett Packard', TRUE, 'Gateway') AS result FROM suppliers;
请注意,使用该SWITCH()函数,您每次都必须提供完整的谓词,因此,您不仅可以仅使用Supplier_id。对于默认值,请使用对人类读者显而易见的谓词,例如TRUE1 = 1或实际上是TRUE:)
1 = 1
TRUE
可能不明显的是该SWITCH()函数中的逻辑不会短路,这意味着该函数中的每个表达式都必须能够正确地求值。如果您需要逻辑短路,则需要使用嵌套IIF()函数。
IIF()