一個非常有趣的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類型一樣靈活


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM