MySQL中有个set类型,非常迷惑

grantbb 2005-04-28 09:03:50
今天为维护别人写的一个程序,看到了MySQL数据表中有个列的属性是set的.但是不知道其含义和使用方法,以及有点.
然后再程序中有看到一段莫名其妙的代码:
说明:usage_flags 是set类型的字段
......and (a.usage_flags & "+usage+")>0;
usage变量可能是一些2的倍数的值,
a.usage_flags & "+usage+"
这个值的结果算出来一半都是0,或者偶数.不知道具体含义,第一次看到在sql中用到&.
百思不得其解!
...全文
600 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
grantbb 2005-05-11
  • 打赏
  • 举报
回复
自己再顶!
grantbb 2005-05-09
  • 打赏
  • 举报
回复
快来研究一下呀。
gu1dai 2005-05-08
  • 打赏
  • 举报
回复
ding
the same to me
grantbb 2005-05-04
  • 打赏
  • 举报
回复
我再具体说一下:我所维护的表中时这样的:
usage_flags字段的类型是set,包括的值有'ls','tp','ns','nt','nb','np','nc','si','al','mr','e5','e4','no','ph'

某一个具体的usage_flags的值可能是:tp,ns
然后这个值可能会和一些偶数相与.
也就是会有: uasage_flags & 108 通过这个表达式的结果是否大于0来查找数据.

所以还是不明白这个表达式的含义和作用.
qingcairousi 2005-05-02
  • 打赏
  • 举报
回复
是“位运算”的AND,所以是按位and,SELECT 出来的就是代表整个set的状态的一个数字
mpshun 2005-05-01
  • 打赏
  • 举报
回复
不过逻辑判断得出的结果不可能是大于0的偶数阿,最多是1和0,楼主说得出的结果一半是0,或者是偶数,奇怪阿。
mpshun 2005-05-01
  • 打赏
  • 举报
回复
受教
qingcairousi 2005-05-01
  • 打赏
  • 举报
回复
“set”就是“集合”,类似于win32的消息,set使用的是位运算,所以在这里,&不是字符串的连接符号,而是位运算中的逻辑AND,(a.usage_flags & "+usage+")>0这个语句可以理解为“在a.usage_flags这个“set”(集合)中,存在"+usage+"这个值”。逻辑AND常用于这样的判断:)
grantbb 2005-04-30
  • 打赏
  • 举报
回复
(a.usage_flags & "+usage+")>0

那这句是什么意思呢?
njstj 2005-04-29
  • 打赏
  • 举报
回复
例如,一个指定为 SET("one", "two") NOT NULL 的列可以有下列任一值:

""
"one"
"two"
"one,two"

一个 SET 最大可以有 64 个不同的成员。
njstj 2005-04-29
  • 打赏
  • 举报
回复
SET 是一个字符串对象,它可以有 0 或更多个值,每个值均必须选自一个允许值列表中,该列表在表创建时被指定。
njstj 2005-04-29
  • 打赏
  • 举报
回复
SET 是一个字符串对象,它可以有 0 或更多个值,每个值均必须选自一个允许值列表中,该列表在表创建时被指定。
mpshun 2005-04-29
  • 打赏
  • 举报
回复
&实际是一个连接操作符,和+是一样的。
grantbb 2005-04-29
  • 打赏
  • 举报
回复
但是为什么能作 & 操作呢?

做了这样的操作的作用又是什么呢?
tmdbcd0630 2005-04-28
  • 打赏
  • 举报
回复
&应该是字符连接得符号把.....学习ING.

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧