+ -
当前位置:首页 → 问答吧 → mysql的make_set函数看不明白

mysql的make_set函数看不明白

时间:2011-10-30

来源:互联网

MAKE_SET(bits,str1,str2,...) 
返回一个设定值 (一个包含被‘,’号分开的字字符串的字符串) ,由在bits 组中具有相应的比特的字符串组成。str1 对应比特 0, str2 对应比特1,以此类推。str1, str2, ...中的 NULL值不会被添加到结果中。 


mysql> SELECT MAKE_SET(1,'a','b','c');

  -> 'a'

mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');

  -> 'hello,world'

mysql> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world');

  -> 'hello'

mysql> SELECT MAKE_SET(0,'a','b','c');

  -> ''
不明白这个bits组,也不明白是怎样通过它来选取字符串的。

作者: jianwu5   发布时间: 2011-10-30

这个BIT组,其实就是二进制 ,比如[ 个 SELECT MAKE_SET(1 | 4,'hello','nice','world');

1|4 0001 | 0100 = 0101 ,然后取出对应位上的字符串。

作者: ACMAIN_CHM   发布时间: 2011-10-30

引用 1 楼 acmain_chm 的回复:

这个BIT组,其实就是二进制 ,比如[ 个 SELECT MAKE_SET(1 | 4,'hello','nice','world');

1|4 0001 | 0100 = 0101 ,然后取出对应位上的字符串。

还是不明白,'hello','nice','world'这些对应什么位?公式中str1对应0,str2对应1,str3是对应11吗?
如果str1对应0的话,
mysql> SELECT MAKE_SET(0,'a','b','c');

  -> ''
岂不是应该是'a'?

作者: jianwu5   发布时间: 2011-10-30

0 = 0000 哪个都不取。

作者: ACMAIN_CHM   发布时间: 2011-10-30

相关阅读 更多

热门下载

更多