MariaDB CRC32C() 函数使用指南
在 MariaDB 中,CRC32C() 是一个内置的数字函数,它用于计算循环冗余校验值并返回一个 32 位无符号值。
与 CRC32() 不同, CRC32C() 使用卡斯塔尼奥利多项式。
MariaDB CRC32C() 语法
这里是 MariaDB CRC32C() 函数的语法:
CRC32C([par,]str)
参数
str- 必需的。 一个用于计算的字符串。非字符串参数将被视为字符串。
par- 可选的。 一个计算循环冗余校验值。可选择参数用于分段计算校验和。
如果您不提供参数或提供了错误数量的参数,MariaDB 将报告一个错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function ‘CRC32C’
返回值
MariaDB CRC32C() 函数用于计算循环冗余校验值并返回一个 32 位无符号值。
如果任一参数为 NULL,CRC32C() 函数将会返回 NULL。
MariaDB CRC32C() 示例
基本示例
要计算 Hello 的循环冗余校验值,请使用以下语句:
SELECT CRC32C('Hello');
输出:
+-----------------+
| CRC32C('Hello') |
+-----------------+
| 2178485787 |
+-----------------+区分大小写
不同大小写的字符串的循环冗余校验值是不同的:
SELECT
CRC32C('Hello'),
CRC32C('HELLO');
输出:
+-----------------+-----------------+
| CRC32C('Hello') | CRC32C('HELLO') |
+-----------------+-----------------+
| 2178485787 | 3901656152 |
+-----------------+-----------------+非字符串参数
MariaDB CRC32C() 的将把非字符串参数视为字符串:
SELECT
CRC32C('1234'),
CRC32C(1234);
输出:
+----------------+--------------+
| CRC32C('1234') | CRC32C(1234) |
+----------------+--------------+
| 4131058926 | 4131058926 |
+----------------+--------------+分段计算
通常,CRC 是分段计算的。为了促进这一点,MariaDB 10.8.0 引入了一个 可选参数:CRC32C('HelloWorld') = CRC32C(CRC32C('Hello'),'World'):
SELECT
CRC32C('HelloWorld'),
CRC32C(CRC32C('Hello'), 'World');
输出:
+----------------------+----------------------------------+
| CRC32C('HelloWorld') | CRC32C(CRC32C('Hello'), 'World') |
+----------------------+----------------------------------+
| 1407507230 | 1407507230 |
+----------------------+----------------------------------+在这个示例中,我们将 HelloWorld 分为 Hello 和 World,然后分段计算。 您可以根据自己的需求任意分段,结果是相同,如下:
SELECT CRC32C(CRC32C('He'), 'lloWorld');
输出:
+----------------------------------+
| CRC32C(CRC32C('He'), 'lloWorld') |
+----------------------------------+
| 1407507230 |
+----------------------------------+结论
在 MariaDB 中,CRC32C() 是一个内置的数字函数,它用于计算循环冗余校验值并返回一个 32 位无符号值。