MariaDB CRC32() 函数使用指南

在 MariaDB 中,CRC32() 是一个内置的数字函数,它用于计算循环冗余校验值并返回一个 32 位无符号值。

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。 它是利用除法及余数的原理来作错误侦测的。

MariaDB CRC32() 语法

这里是 MariaDB CRC32() 函数的语法:

CRC32(str)

或(>= MariaDB 10.8)

CRC32([par,]str)

参数

str
必需的。 一个用于计算的字符串。非字符串参数将被视为字符串。
par
可选的。 一个计算循环冗余校验值。

如果您不提供参数或提供了错误数量的参数,MariaDB 将报告一个错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function ‘CRC32’

返回值

MariaDB CRC32() 函数用于计算循环冗余校验值并返回一个 32 位无符号值。

如果任一参数为 NULLCRC32() 函数将会返回 NULL

MariaDB CRC32() 示例

基本示例

要计算 Hello 的循环冗余校验值,请使用以下语句:

SELECT CRC32('Hello');

输出:

+----------------+
| CRC32('Hello') |
+----------------+
|     4157704578 |
+----------------+

区分大小写

不同大小写的字符串的循环冗余校验值是不同的:

SELECT
  CRC32('Hello'),
  CRC32('HELLO');

输出:

+----------------+----------------+
| CRC32('Hello') | CRC32('HELLO') |
+----------------+----------------+
|     4157704578 |     3242484790 |
+----------------+----------------+

非字符串参数

MariaDB CRC32() 的将把非字符串参数视为字符串:

SELECT
  CRC32('1234'),
  CRC32(1234);

输出:

+---------------+-------------+
| CRC32('1234') | CRC32(1234) |
+---------------+-------------+
|    2615402659 |  2615402659 |
+---------------+-------------+

分段计算

通常,CRC 是分段计算的。为了促进这一点,MariaDB 10.8.0 引入了一个 可选参数:CRC32('HelloWorld') = CRC32(CRC32('Hello'),'World')

SELECT
  CRC32('HelloWorld'),
  CRC32(CRC32('Hello'), 'World');

输出:

+---------------------+--------------------------------+
| CRC32('HelloWorld') | CRC32(CRC32('Hello'), 'World') |
+---------------------+--------------------------------+
|          2004290681 |                     2004290681 |
+---------------------+--------------------------------+

在这个示例中,我们将 HelloWorld 分为 HelloWorld,然后分段计算。 您可以根据自己的需求任意分段,结果是相同,如下:

SELECT CRC32(CRC32('He'), 'lloWorld');

输出:

+--------------------------------+
| CRC32(CRC32('He'), 'lloWorld') |
+--------------------------------+
|                     2004290681 |
+--------------------------------+

结论

在 MariaDB 中,CRC32() 是一个内置的数字函数,它用于计算循环冗余校验值并返回一个 32 位无符号值。