我希望我能准确地解释我需要得到什么。
我有一个具有 MEDIUMBLOB 类型的特定列的表。我需要做的是确定插入到此列中的每个值的大小,按 idMsg 分组,并将此值转换为 MB。
数据库结构是:
CREATE TABLE `sat_msgBlob` (
`idOwnApp` MEDIUMINT(11) NOT NULL DEFAULT '0',
`idMsg` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`idVeh` MEDIUMINT(11) NULL DEFAULT NULL,
`idTypeMsg` MEDIUMINT(11) NULL DEFAULT NULL,
`idProviderComm` MEDIUMINT(11) NULL DEFAULT NULL,
`idPayCode` MEDIUMINT(11) NULL DEFAULT NULL,
`msgInOut` CHAR(1) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`idMsgSender` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`txMsg` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`tmMsg` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`idControl` MEDIUMINT(11) NOT NULL DEFAULT '0',
`txBlob` MEDIUMBLOB NULL DEFAULT NULL,
`idUpdUser` MEDIUMINT(11) NULL DEFAULT NULL,
`tmUpdate` DATETIME NULL DEFAULT NULL,
`idMission` MEDIUMINT(11) NULL DEFAULT NULL,
`idEvent` MEDIUMINT(11) NULL DEFAULT NULL,
`tmPrcsLast` DATETIME NULL DEFAULT NULL,
`idBlob` VARCHAR(250) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
PRIMARY KEY (`idMsg`, `tmMsg`) USING BTREE,
INDEX `X2` (`idVeh`, `idOwnApp`, `tmMsg`) USING BTREE,
INDEX `m1` (`idMission`, `idEvent`) USING BTREE,
INDEX `X3` (`idControl`) USING BTREE,
INDEX `X4` (`tmMsg`) USING BTREE,
INDEX `X6` (`idBlob`) USING BTREE,
INDEX `X7` (`tmUpdate`) USING BTREE
)
COLLATE='utf8_general_ci'
AUTO_INCREMENT=971935070
AVG_ROW_LENGTH=8450
MAX_ROWS=4294967295;
在这个 txBlob 列中插入的数据如下所示
0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C21444F435459504520566D4D4C2053595354454D2022687474703A2F2F7777772E766961747261636B2E726F2F737065632F566D4D4C5F76302E312E6474
我曾尝试使用此查询,但我不确定该值是否正确:
SELECT sys.format_bytes(LENGTH(txBlob)) AS size
FROM sat_msgBlob
WHERE tmMsg BETWEEN '2021-03-01' AND '2021-03-02'
GROUP BY idMsg