MariaDB STRCMP() 函数使用指南

在 MariaDB 中,STRCMP() 是一个内置的字符串函数,它比较两个字符串并返回 01-1 表示比较结果。

MariaDB STRCMP() 函数基于字符串采用的字符排列规则(collation)比较两个字符串。

MariaDB STRCMP() 语法

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

STRCMP(str1, str2)

参数

str1
必需的。参与比较的第 1 个字符串。
str2
必需的。参与比较的第 2 个字符串。

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

返回值

MariaDB STRCMP(str1, str2) 函数返回两个字符串比较后的结果:

  • 如果 str1 等于 str1STRCMP() 函数将返回 0
  • 如果 str1 小于 str1STRCMP() 函数将返回 -1
  • 如果 str1 大于 str1STRCMP() 函数将返回 1

当任意个参数为 NULL 时, STRCMP() 函数将返回 NULL

MariaDB STRCMP() 示例

基本用法

这个语句展示了 MariaDB STRCMP() 函数的基本用法:

SELECT
    STRCMP('abc', 'abc'),
    STRCMP('abc', 'def'),
    STRCMP('def', 'abc')\G

输出:

STRCMP('abc', 'abc'): 0
STRCMP('abc', 'def'): -1
STRCMP('def', 'abc'): 1

排序规则

STRCMP() 函数基于字符串采用的字符排列规则(collation)比较两个字符串。让我们看下面的例子:

SET @s1 = _latin7 'x' COLLATE latin7_general_ci;
SET @s2 = _latin7 'X' COLLATE latin7_general_ci;
SET @s3 = _latin7 'x' COLLATE latin7_general_cs;
SET @s4 = _latin7 'X' COLLATE latin7_general_cs;
SELECT STRCMP(@s1, @s2), STRCMP(@s3, @s4);

输出:

+------------------+------------------+
| STRCMP(@s1, @s2) | STRCMP(@s3, @s4) |
+------------------+------------------+
|                0 |               -1 |
+------------------+------------------+

这里:

  • @s1@s2 的排序规则 (COLLATE) 为 latin7_general_ci,即不区分大小写,因此 xX 的比较结果返回了 0
  • @s3@s4 的排序规则 (COLLATE) 为 latin7_general_cs,即区分大小写,因此 xX 的比较结果返回了 -1

结论

MariaDB STRCMP() 函数用来比较两个字符串并返回比较结果。