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组,也不明白是怎样通过它来选取字符串的。

解决方案 »

  1.   

    这个BIT组,其实就是二进制 ,比如[ 个  SELECT MAKE_SET(1 | 4,'hello','nice','world');1|4   0001 | 0100 = 0101 ,然后取出对应位上的字符串。
      

  2.   

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

  3.   

    能说得具体点吗?
    比如0101怎么就匹配'hello','world'呢?
      

  4.   

    右面的第1个bit,对面左起第1个参数
    .....
    右面的第N个bit,对面左起第N个参数0101,亦即第一、三个参数有用