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

  • 相关阅读:
    excel生成csv后,0001变成1
    windows_server_2012_r2提示api-ms-win-crt-runtime-l1-1-0.dll 丢失
    py文件生成exe程序
    朴素贝叶斯分类(上)
    01 | 数据分析全景图及修炼指南
    BBS
    BBS
    BBS
    BBS
    BBS
  • 原文地址:https://www.cnblogs.com/hicolin/p/13827501.html
Copyright © 2011-2022 走看看