MariaDB BIT_LENGTH() 函数使用指南

在 MariaDB 中,BIT_LENGTH() 是一个内置的字符串函数,它返回给定的字符串参数的位数。

MariaDB BIT_LENGTH() 语法

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

BIT_LENGTH(str)

参数

str
必需的。 需要计算位长度的字符串。

如果缺少参数, MariaDB 将报告错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function ‘BIT_LENGTH’。

返回值

MariaDB BIT_LENGTH() 函数返回的是给定字符串的位数。BIT_LENGTH() 函数返回的值是 LENGTH() 函数返回值的 8 倍,因为 1 个字节等于 8 位。

  • 如果参数类型不是字符串类型,BIT_LENGTH() 函数会尝试将参数转为字符串。
  • 如果参数 strNULL,它将返回 NULL

MariaDB BIT_LENGTH() 示例

基本用法

这个语句使用 MariaDB BIT_LENGTH() 函数返回字符 A 的位数:

SELECT BIT_LENGTH('A'), BIT_LENGTH('AB');

输出:

+-----------------+------------------+
| BIT_LENGTH('A') | BIT_LENGTH('AB') |
+-----------------+------------------+
|               8 |               16 |
+-----------------+------------------+

我们可以看到字母 A 的长度为 8 位(即 1 个字节),字符串 AB 有 16 位(即 2 个字节)。

下面是使用长度超过 1 个字节的字符的示例:

SELECT BIT_LENGTH('好');

输出:

+-------------------+
| BIT_LENGTH('好')  |
+-------------------+
|                24 |
+-------------------+

错误的参数类型

如果参数不是字符串,它将转换为字符串。

SELECT
  BIT_LENGTH(1),
  BIT_LENGTH(12),
  BIT_LENGTH(123);

输出:

+---------------+----------------+-----------------+
| BIT_LENGTH(1) | BIT_LENGTH(12) | BIT_LENGTH(123) |
+---------------+----------------+-----------------+
|             8 |             16 |              24 |
+---------------+----------------+-----------------+

综合示例

SELECT
    BIT_LENGTH('a'),
    BIT_LENGTH('string'),
    BIT_LENGTH(1),
    BIT_LENGTH(01),
    BIT_LENGTH('01'),
    BIT_LENGTH('你好'),
    BIT_LENGTH(NULL)\G

输出:

*************************** 1. row ***************************
     BIT_LENGTH('a'): 8
BIT_LENGTH('string'): 48
       BIT_LENGTH(1): 8
      BIT_LENGTH(01): 8
    BIT_LENGTH('01'): 16
BIT_LENGTH('你好'): 48
    BIT_LENGTH(NULL): NULL

注意, BIT_LENGTH(01)BIT_LENGTH('01') 返回的结果并不相同,这是因为 01 是数字类型,会首先转为 1,再执行 BIT_LENGTH(1)

结论

MariaDB BIT_LENGTH() 函数返回给定的字符串参数的位数。