MySQL EXPORT_SET() 函数
MySQL EXPORT_SET() 函数用于将一组二进制位转换成一个较短的十进制数。该函数需要两个参数,第一个参数用来设置二进制位的顺序,第二个参数是需要进行转换的数值。
EXPORT_SET() 函数将二进制位逆序排列,排列方式为从右向左:
如果值的第一个二进制位为1,则返回1;
如果值的第二个二进制位为1,则返回2;
如果值的第三个二进制位为1,则返回4,以此类推。
如果所有的二进制位都是0,那么该函数将返回空字符串。
函数参数
EXPORT_SET() 函数需要两个参数:
separator: 翻译成中文就是分隔符。表示二进制位的顺序。如果设置为null,则返回使用逗号逗号分隔的默认二进制位顺序(从右至左递增的顺序,例如:00001,00010,00100,01000,10000),也可以使用指定的1或0代替逗号
bitfield: 要进行转换的整数值(可以是有符号或无符号,BIGINT或INT类型)。
NULL参数
separator 参数为null
当 separator 参数设置为 null 时:
如果 bitfield 参数为 null,则 EXPORT_SET() 函数将返回 null。
如果 bitfield 参数不为 null,则 EXPORT_SET() 函数将返回使用逗号分隔的默认二进制位顺序 (从右向左递增的顺序,例如:00001,00010,00100,01000,10000)。
-- separator 参数为 null,bitfield 参数为 null
SELECT EXPORT_SET(null, null);\-- null
-- separator 参数为 null,bitfield 参数为 11
SELECT EXPORT_SET(null, 11);\-- 00011
separator 参数不为 null
当 separator 参数不为 null 时:
如果 bitfield 参数为 null,则 EXPORT_SET() 函数将返回null。
如果 bitfield 参数不为 null,则 EXPORT_SET() 函数将使用指定的分隔符进行二进制位排序。
-- separator 参数不为 null,bitfield 参数为 null
SELECT EXPORT_SET(' ', null);\-- null
-- separator 参数不为 null,bitfield 参数为 11
SELECT EXPORT_SET('/', 11);\-- 0001/1
总结
在使用MySQL EXPORT_SET() 函数时,如果任何一个参数传入null,那么函数返回值都是null。如果separator 参数传入null,则默认使用使用逗号逗号分隔的默认二进制位顺序。