从值/单位表中选择记录的最佳方法是什么?

时间:2017-08-15 09:45:57

标签: postgresql

我的hard_drives表格中包含producent, size, unit

samsung|256|GB
caviar |850|MB
sandisc|512|GB
seagate|2  |TB

我想创建用于选择size > 128GBsize < 1000MBsize < 1TB等硬盘的查询。

您是否会添加size_in_bytes之类的新列,或者使用列storage_units创建一些转化表(如unit, size_in_bytes)并将其用于计算,或者可能有更好的方法来执行此类查询?

1 个答案:

答案 0 :(得分:0)

您应该使用通用单元(可能是MB)来存储所有磁盘大小。作为解决方法,您可以在CASE子句中使用WHERE表达式:

SELECT *
FROM yourTable
WHERE
    CASE WHEN unit = 'MB' THEN size
         WHEN unit = 'GB' THEN 1000*size
         WHEN unit = 'TB' THEN 1000*1000*size END > 128*1000   -- size > 128GB