MySQL MAKE_SET() 函数
MySQL MAKE_SET() 函数用于根据给定的位从一组值中检索字符串值(以逗号分隔)。
此函数接受以 "|" 分隔的位值和一系列字符串作为参数,并返回一个字符串,其中每个位值都被替换为该字符串系列中的相应值。
语法
以下是 MySQL MAKE_SET() 函数的语法 -
MAKE_SET(bits,str1,str2,...)
参数
此函数接受一个数值和一个字符串列表作为参数。
返回值
此函数返回一个以逗号分隔的字符串,其中整数的每个位对应于相应字符串的包含或排除。
示例
在下面的示例中,我们使用 MAKE_SET() 函数,其位值为 3。3 的二进制表示为 '11',即两个位置均为 1。因此,它从字符串"apple"、"banana"、"mango"和"grapes"系列中返回"apple"和"banana",因为它们的位置对应于二进制位 -
SELECT MAKE_SET(3,'apple','banana','mango', 'grapes');
以下是上述代码的输出 -
| MAKE_SET(3,'apple','banana','mango', 'grapes') |
|---|
| apple,banana |
示例
此处,第一位为 1,即 001,最右边的数字为 1,因此返回 'apple'(第一位),第二位为 4,即 100,第三位为 1(从右到左),因此返回 'mango' -
SELECT MAKE_SET(1|4,'苹果','香蕉','芒果','葡萄');
上述代码的输出如下所示 -
| MAKE_SET(1|4,'apple','banana','mango', 'grapes') |
|---|
| apple,mango |
示例
即使重复使用多个位值,生成的字符串也只包含这些值一次(不重复)-
SELECT MAKE_SET(3|3|3|3,'apple','banana','mango', 'grapes');
获得的输出如下 −
| MAKE_SET(3|3|3|3,'apple','banana','mango', 'grapes') |
|---|
| apple,banana |
示例
如果将 NULL 值作为字符串序列中的位传递,则它们不会包含在结果中(没有 NULL 值)−
SELECT MAKE_SET(3|2,'Java', NULL, 'JavaFX','OpenCV', NULL, 'CoffeeScript', 'WebGL');
生成的结果如下 -
| MAKE_SET(3|2,'Java', NULL, 'JavaFX','OpenCV', NULL, 'CoffeeScript', 'WebGL') |
|---|
| Java |
示例
如果传递给此函数的任何参数为 NULL,则返回 NULL -
SELECT LOCATE(NULL, 'Tutorialspoint');
以下是上述代码的输出 -
| LOCATE(NULL, 'Tutorialspoint') |
|---|
| NULL |
示例
您也可以将一系列数字(而不是字符串)作为参数传递给此函数 -
SELECT MAKE_SET(5, 558, 5558, 66988, 6547, 669, 368);
执行上述代码后,我们得到以下输出 -
| MAKE_SET(5, 558, 5558, 66988, 6547, 669, 368) |
|---|
| 558,66988 |
mysql-make-set-function.html