跳到主要内容

PARSE_DATA_SIZE

描述

PARSE_DATA_SIZE 函数用于解析带存储单位的字符串(如 "1.5GB"),将其转换为以字节为单位的数值。

语法

PARSE_DATA_SIZE(<str>)

参数

参数说明
<str>带单位的数据大小字符串(如 "100MB", "2.5GB")。类型:VARCHAR

返回值

返回 BIGINT 类型,表示转换为字节后的数值。

特殊情况:

  • 支持的单位(不区分大小写):B, kB, MB, GB, TB, PB, EB, ZB, YB
  • 单位采用 1024 进制(如 1kB = 1024B)
  • 支持小数(如 "2.5MB")
  • 如果参数格式不合法,返回错误
  • 如果参数为 NULL,返回 NULL

支持的单位对照表:

单位名称字节数
BBytes1
kBKilobytes1024
MBMegabytes1024²
GBGigabytes1024³
TBTerabytes1024⁴
PBPetabytes1024⁵
EBExabytes1024⁶

示例

  1. 基本用法:解析字节
SELECT parse_data_size('1024B');
+--------------------------+
| parse_data_size('1024B') |
+--------------------------+
| 1024 |
+--------------------------+
  1. 解析千字节
SELECT parse_data_size('1kB');
+------------------------+
| parse_data_size('1kB') |
+------------------------+
| 1024 |
+------------------------+
  1. 解析带小数的兆字节
SELECT parse_data_size('2.5MB');
+--------------------------+
| parse_data_size('2.5MB') |
+--------------------------+
| 2621440 |
+--------------------------+
  1. 解析吉字节
SELECT parse_data_size('1GB');
+------------------------+
| parse_data_size('1GB') |
+------------------------+
| 1073741824 |
+------------------------+
  1. 解析太字节
SELECT parse_data_size('1TB');
+------------------------+
| parse_data_size('1TB') |
+------------------------+
| 1099511627776 |
+------------------------+
  1. 不支持的单位,报错
SELECT parse_data_size('1iB');
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[INVALID_ARGUMENT]Invalid Input argument "1iB" of function parse_data_size
  1. 输入 NULL
SELECT parse_data_size(NUll);
+-----------------------+
| parse_data_size(NUll) |
+-----------------------+
| NULL |
+-----------------------+

Keywords

PARSE_DATA_SIZE