zoukankan      html  css  js  c++  java
  • 一个非常有趣的MySql字段类型 SET

    SET类型在定义的时候是一组值的集合,像这样

    SET(value1,value2,value3,...)

    他有点像枚举(ENUM)类型,但有别与枚举(ENUM)的是 枚举(ENUM)是一个单选集合,SET类型是一个多选集合

    我们知道SET类型集合的索引是从1开始依次为 1,2,4,8,...,最大可以有64个值,可以看出这个数列分别对应的是2n,n从0开始

    有趣的是 这个索引(数列),任意一组索引的和都是唯一的

    所以可以用一个唯一整数来确定到底选中了哪几个值。
    比如 1 + 2 + 4 = 7就表示 value1,value2,value3被选中了
    假如我们用 1表示选中,0表示不选中
    那么value1,value2,value3 都选中就是 111
    如果选中value1,value2,value4的话就是1101,那么value 1 2 4 的索引的和是1 + 2 + 8 = 11

    111 和 7 = 20 + 21 + 22
    1101 和 11 = 20 + 21 + 0+23
    索引的值 = 2n
    单纯觉得有趣,仅此而已。

    Tips
    在sqlserver的开发中,常自己拼接一组值来指定一个多选属性
    比如会定义一个药品的管理方式,以前的做法是用1234567890abcdef...来定义不同的类型,然后拼接成字符串存放在后台,在查询的时候会用到charindex来判断是否满足条件,其实也可以做的像mysql set类型一样灵活

  • 相关阅读:
    java中的异常类
    Mysql--JDBC的基础
    eclipse使用断言
    idea中使用断言
    java的null
    array,集合(collection),集合(list)的区别
    命名管道FIFO
    标准库中的管道操作
    现代进程间的通信方式--管道
    广播编程之发送者
  • 原文地址:https://www.cnblogs.com/hicolin/p/13827501.html
Copyright © 2011-2022 走看看