照楼主1说的那样的话,那么第一位应该是1,而1对应的是nice,则该取出'nice'才对啊

解决方案 »

  1.   

    SELECT MAKE_SET(1 | 4,'hello','nice','world');'hello','nice','world'
    楼主为什么认为第一个是 'nice' ?! 说明一下理由。
    然后MYSQL本身会告诉你没有任何理由它认为 'hello' 是第一个。遵照MYSQL的规则来。
      

  2.   

    str1 对应比特 0, str2 对应比特1,以此类推照这样的话,str2应该是nice,对应比特1呀
      

  3.   

    对于计算机中来说,很多东西并不是有什么道理,完全看应用程序自己是如何定义的。 而MYSQL中的定义就是。
    1。 MAKE_SET它不存在0BIT它的计数从1开始
    2. 它的第一BIT是类似个位数的位置。
      

  4.   

    您的意思我大致懂了,像那个0101,从右边开始,第一位是1,对应的是hello,如果第一位是0,那么就不取出hello,第二位是0,所以不取出nice,第3位是1,所以取出world,故而结果是'hello,world'是这个意思吗?
      

  5.   

     SELECT MAKE_SET(1 | 4,'hello','nice','world');
    1|4是 1和4“或运算”,得0101,将这个二进数倒过来写,从左到右,由低位到高位写,为1010。
    对应字符串排列为
    hello,nice,world,对应着从低位到高位的1,2,4(只有3位),取出1对应的字符串
    所以,1(hello)0(nice)1(world)0,对应hello,word