我的hard_drives
表格中包含producent, size, unit
列
samsung|256|GB
caviar |850|MB
sandisc|512|GB
seagate|2 |TB
我想创建用于选择size > 128GB
,size < 1000MB
,size < 1TB
等硬盘的查询。
您是否会添加size_in_bytes
之类的新列,或者使用列storage_units
创建一些转化表(如unit, size_in_bytes
)并将其用于计算,或者可能有更好的方法来执行此类查询?
答案 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