我正在尝试使用 CHAR_LENGTH 计算表中存储的元数据的总大小,以将每行中相关字段的大小相加,以大致了解结果集的存储大小。
我不想要表中所有数据的大小,只想要一组结果的大小。
但是,表中的某些字段具有 NULL 值,一旦 CHAR_LENGTH 达到其中之一,整个计算就会失败,因为 CHAR_LENGTH 返回 NULL 而不是 0。
例如:
SELECT SUM(row_size) as `total` FROM ( SELECT CHAR_LENGTH(`field1`)+CHAR_LENGTH(`field2`)+CHAR_LENGTH(`field3`)+CHAR_LENGTH(`field4`) as `row_size` FROM `meta_data` WHERE `id` = 1 AND `id2` = 2 ) as tbl1;
对于某些查询,这是可行的,我得到了以字节为单位的大小,但对于任何在结果的任何行中的任何字段上具有 NULL 值的查询,我什么都得不到。
为什么 CHAR_LENGTH 不会为 NULL 值返回 0?
我想下一个最好的事情是取回结果并在代码中迭代它们以增加大小。我希望避免这样做,但这可能是唯一的方法吗?