最近在学习 MySQL 的字符串函数时,发现了标题中的这个函数:EXPORT_SET(),百度了一下发现全部都是机翻的文章,经过一番实际操作终于搞懂了这个函数的准确意思,分享给大家。
语法
EXPORT_SET(bits,on,off[,separator[,number_of_bits]])
说明
这个函数将一个10进制的整数(bits),转换为二进制字符串,然后根据二进制字符串的每一位返回对应的on(对应1)和off(对应0),以连接符separator链接,计算长度由number_of_bits控制。其中对二进制字符串的位检查是从右到左(低位到高位),而返回的字符串从左到右。连接符separator默认为逗号(,),返回长度number_of_bits默认为64,这里会自动视为无符号整数,所以-1和64是相同的,如果number_of_bits大于二进制字符串位数,那么多余的位数由off填充。
上面的描述比较难以理解,下面举几个例子演示一下,大家就懂了。
示例
/*
整数5的二进制值为'101',on参数设置为'On',off参数设置为'Off',连接符使用',',长度为4
因此返回'101'每一位对应的'On'或'Off':'On,Off,On',长度为4,缺的1位补'Off',最终输出:
'On,Off,On,Off'
*/
mysql> SELECT EXPORT_SET(5,'Y','N',',',4);
-> 'On,Off,On,Off'
/*
整数32的二进制值为'100100',on参数设置为'1',off参数设置为'0',连接符使用'-',长度为10
因此返回'001001'(从右到左)每一位对应的'1'或'0':'0-0-1-0-0-1',长度为10,缺的4位补'0',最终输出:'0-0-1-0-0-1-0-0-0-0'
*/
mysql> SELECT EXPORT_SET(32,'1','0','-',10);
-> '0-0-1-0-0-1-0-0-0-0'