MySQL MAKE_SET() 函式



MySQL 的MAKE_SET()函式用於根據給定的位(位集合)檢索字串值(以逗號分隔)。

此函式接受以“|”分隔的位值和一系列字串作為引數,並返回一個字串,其中每個位值都被替換為來自一系列字串的對應值。

語法

以下是 MySQL MAKE_SET() 函式的語法:

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

引數

此函式採用數值和字串列表作為引數。

返回值

此函式返回一個逗號分隔的字串,其中整數的每個位位置對應於相應字串的包含或排除。

示例

在下面的示例中,我們使用位值為 3 的 MAKE_SET() 函式。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,'apple','banana','mango', 'grapes');

以上程式碼的輸出如下:

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,JavaFX,OpenCV,CoffeeScript,WebGL

示例

如果傳遞給此函式的任何引數為 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.htm
廣告