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

本文将介绍一个常用的信息函数,COLLATION(),它用于返回一个表达式的校对规则名称。

发布于

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

语法

COLLATION() 函数的语法如下:

COLLATION(expr)

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

COLLATION() 函数返回的是一个字符串,表示表达式的校对规则名称,例如 utf8mb4_general_cilatin1_swedish_ci 等。校对规则是指对字符进行比较和排序的规则,它决定了字符的大小写敏感性,重音敏感性,以及语言特定的规则等。不同的校对规则可能导致不同的查询结果,例如,对于 WHERE name = 'Maria' 这样的条件,如果使用 utf8mb4_general_ci 这样的不区分大小写的校对规则,那么 namemaria 或者 MARIA 的记录也会被匹配,而如果使用 utf8mb4_bin 这样的区分大小写的校对规则,那么只有 nameMaria 的记录才会被匹配。

实例

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

返回一个常量字符串的校对规则

SELECT COLLATION('Hello');
+--------------------+
| COLLATION('Hello') |
+--------------------+
| utf8mb4_general_ci |
+--------------------+

返回一个变量字符串的校对规则

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

返回一个列名的校对规则

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

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

SELECT name, COLLATION(name) FROM test;
+-------+-------------------+
| name  | COLLATION(name)   |
+-------+-------------------+
| Alice | latin1_swedish_ci |
| Bob   | latin1_swedish_ci |
+-------+-------------------+

返回一个使用 CONVERT() 函数转换字符集的表达式的校对规则

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

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

SELECT COLLATION('MariaDB' COLLATE utf8mb4_bin);
+------------------------------------------+
| COLLATION('MariaDB' COLLATE utf8mb4_bin) |
+------------------------------------------+
| utf8mb4_bin                              |
+------------------------------------------+

相关函数

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

  • CHARSET() 函数:返回一个表达式的字符集名称。
  • DATABASE() 函数:返回当前的数据库名称。
  • USER() 函数:返回当前的用户名称和主机名称。
  • VERSION() 函数:返回当前的 MariaDB 版本号。
  • CONNECTION_ID() 函数:返回当前的连接标识符。

例如,下面的语句使用了 CHARSET() 函数和 VERSION() 函数,返回一个字符串的字符集名称和当前的 MariaDB 版本号。

SELECT CHARSET('Hello'), VERSION();
+------------------+-----------------+
| CHARSET('Hello') | VERSION()       |
+------------------+-----------------+
| utf8mb4          | 10.6.4-MariaDB  |
+------------------+-----------------+

结论

本文介绍了 MariaDB 的一个常用的信息函数,COLLATION(),它用于返回一个表达式的校对规则名称。本文还介绍了函数的语法,给出了一些实例,以及列举了一些相关的函数。