MariaDB MAKE_SET() 函数使用指南

在 MariaDB 中,MAKE_SET() 是一个字符串函数,它返回一个逗号分隔的字符串集合,该函数通过第一个参数对应的二进制决定是否其他字符串参数是否添加到结果集合中。

MariaDB MAKE_SET() 语法

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

MAKE_SET(bits, str1, str2, ...)

参数

bits
必需的。一个数字。将 bits 转为二进制并反转后的各个位决定 str1, str2, ... 是否出现在结果中。
str1, str2, ...
必需的。备选字符串。str1, str2, ... 分别由 bits 二进制并反转后的值中的第 1, 2, ... 决定是否出现在结果中。

返回值

MariaDB MAKE_SET() 函数从 str1, str2, ... 根据 bits 对应的二进制并反转后的值挑选对应的字符串,如果二进制位是 1,则将对应的参数加入结果集合中,并返回一个逗号分隔的字符串集合。

参数 str1, str2, ... 中的 NULL 不会出现结果中。

比如 bits = 66 对应的二进制是 110110 反转后 011,那么 MAKE_SET() 函数返回的结果是 str2,str3

如果 bits0MAKE_SET() 函数将返回空串。

MariaDB MAKE_SET() 示例

SELECT
    MAKE_SET(0, 'a', 'b', 'c', 'd'),
    MAKE_SET(1, 'a', 'b', 'c', 'd'),
    MAKE_SET(2, 'a', 'b', 'c', 'd'),
    MAKE_SET(3, 'a', 'b', 'c', 'd'),
    MAKE_SET(4, 'a', 'b', 'c', 'd')\G

输出:

*************************** 1. row ***************************
MAKE_SET(0, 'a', 'b', 'c', 'd'):
MAKE_SET(1, 'a', 'b', 'c', 'd'): a
MAKE_SET(2, 'a', 'b', 'c', 'd'): b
MAKE_SET(3, 'a', 'b', 'c', 'd'): a,b
MAKE_SET(4, 'a', 'b', 'c', 'd'): c

在本示例中,

  • bits = 11 对应的二进制是 1,反过来是 1,那么 'a' 对应的 1,因此返回 'a'
  • bits = 22 对应的二进制是 10,反过来是 01,参数 'a' 对应的 0,参数 'b' 对应的 1,因此返回 'b'
  • bits = 33 对应的二进制是 11,反过来是 11,参数 'a' 对应的 1,参数 'b' 对应的 1,因此返回 'a,b'
  • bits = 44 对应的二进制是 100,反过来是 001,参数 'a' 对应的 0,参数 'b' 对应的 0,参数 'c' 对应的 1,因此返回 'c'

您可以使用 BIN() 函数计算一个数字的二进制。

结论

MariaDB MAKE_SET() 函数返回一个逗号分隔的字符串集合,该函数通过第一个参数对应的二进制决定是否其他字符串参数是否添加到结果集合中。