MariaDB COERCIBILITY() 函数的基础用法与实例

本文将介绍一个常用的信息函数,COERCIBILITY(),它用于返回一个表达式的强制性值。

发布于

MariaDB 是一个开源的关系型数据库管理系统,它是 MySQL 的一个分支,兼容 MySQL 的语法和功能。MariaDB 支持多种字符集和校对规则,用于存储和处理不同语言的文本数据。本文将介绍一个常用的信息函数,COERCIBILITY(),它用于返回一个表达式的强制性值。

语法

COERCIBILITY() 函数的语法如下:

COERCIBILITY(expr)

其中,expr 是要获取强制性值的表达式,可以是任意类型的表达式,可以是常量,变量,列名,或者子查询等。如果 exprNULL,则函数返回 NULL

COERCIBILITY() 函数返回的是一个整数,表示表达式的强制性值,范围是 0 到 5。强制性值越小,表示表达式的字符集和校对规则越难被改变,越优先被使用。强制性值越大,表示表达式的字符集和校对规则越容易被改变,越后被使用。强制性值的含义如下:

  • 0:表示表达式是一个常量字符串,它的字符集和校对规则是显式指定的,例如 'Hello' COLLATE utf8mb4_bin
  • 1:表示表达式是一个列名,它的字符集和校对规则是从表定义中继承的,例如 name
  • 2:表示表达式是一个常量字符串,它的字符集和校对规则是从上下文中推断的,例如 'Hello'
  • 3:表示表达式是一个变量,它的字符集和校对规则是从变量定义中继承的,例如 @name
  • 4:表示表达式是一个函数的返回值,它的字符集和校对规则是从函数定义中继承的,例如 SUBSTRING(name, 1, 2)
  • 5:表示表达式是一个函数的返回值,它的字符集和校对规则是从函数的参数中推断的,例如 CONCAT(name, ' ')

实例

下面给出一些使用 COERCIBILITY() 函数的实例,以及相应的代码和输出结果。

返回一个常量字符串的强制性值

SELECT COERCIBILITY('Hello' COLLATE utf8mb4_bin);
+-------------------------------------------+
| COERCIBILITY('Hello' COLLATE utf8mb4_bin) |
+-------------------------------------------+
|                                         0 |
+-------------------------------------------+

返回一个变量字符串的强制性值

SET @name = 'MariaDB' COLLATE utf8mb4_bin;
SELECT COERCIBILITY(@name);
+---------------------+
| COERCIBILITY(@name) |
+---------------------+
|                   3 |
+---------------------+

返回一个列名的强制性值

CREATE TABLE test (
  id INT,
  name VARCHAR(20) CHARACTER SET latin1
);

INSERT INTO test VALUES (1, 'Alice'), (2, 'Bob');

SELECT name, COERCIBILITY(name) FROM test;
+-------+--------------------+
| name  | COERCIBILITY(name) |
+-------+--------------------+
| Alice |                  1 |
| Bob   |                  1 |
+-------+--------------------+

返回一个使用 CONVERT() 函数转换字符集的表达式的强制性值

SELECT COERCIBILITY(CONVERT('你好,世界!' USING gbk));
+-----------------------------------------------+
| COERCIBILITY(CONVERT('你好,世界!' USING gbk)) |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+

返回一个使用 COLLATE 子句转换校对规则的表达式的强制性值

SELECT COERCIBILITY('MariaDB' COLLATE utf8mb4_bin);
+---------------------------------------------+
| COERCIBILITY('MariaDB' COLLATE utf8mb4_bin) |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+

相关函数

除了 COERCIBILITY() 函数外,MariaDB 还提供了一些其他的信息函数,用于获取不同方面的信息。下面列举了一些常用的信息函数,并给出了简单的介绍和举例。

  • CHARSET() 函数:返回一个表达式的字符集名称。
  • COLLATION() 函数:返回一个表达式的校对规则名称。
  • DATABASE() 函数:返回当前的数据库名称。
  • USER() 函数:返回当前的用户名称和主机名称。
  • VERSION() 函数:返回当前的 MariaDB 版本号。

例如,下面的语句使用了 CHARSET() 函数和 COLLATION() 函数,返回一个字符串的字符集名称和校对规则名称。

SELECT CHARSET('Hello'), COLLATION('Hello');
+------------------+--------------------+
| CHARSET('Hello') | COLLATION('Hello') |
+------------------+--------------------+
| utf8mb4          | utf8mb4_general_ci |
+------------------+--------------------+

结论

本文介绍了 MariaDB 的一个常用的信息函数,COERCIBILITY(),它用于返回一个表达式的强制性值。本文还介绍了函数的语法,给出了一些实例,以及列举了一些相关的函数。