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类型一样灵活

  • 相关阅读:
    Anaconda+用conda创建python虚拟环境
    Linux安装matlab及简单操作
    Matlab2016b 版本knnclassify函数在Matlab2019b的替换及解决方案
    WIN TO GO实现win10系统迁移
    ArcMap高版本文件保存成低版本
    matlab 保存大于2GB数据
    Tensorflow_gpu + anconda3_3.4.2 +keras2.1.1 + CUDA8.0+CUDNN5.1
    B
    A
    POJ I Think I Need a Houseboat
  • 原文地址:https://www.cnblogs.com/hicolin/p/13827501.html
Copyright © 2011-2022 走看看