MYSQL SET類型字段的SQL操作知識介紹
更新時間:2013年07月02日 11:49:38 作者:
本篇文章是對MYSQL中SET類型字段的SQL操作知識進行了詳細(xì)的分析介紹,需要的朋友參考下
復(fù)制代碼 代碼如下:
<em>`mark` set('index','best','hot')</em>
用的人少,懂的人也少,找了很久,總算湊齊了一套知識點
看上面的結(jié)構(gòu),MYSQL不傻,會存index嗎,不會,存的是數(shù)字
SET字段是利用二進制數(shù)字來一一對應(yīng)你設(shè)置的值,比如index,排在第0位,那么2的零次方等于1
復(fù)制代碼 代碼如下:
update from table SET mark=1
復(fù)制代碼 代碼如下:
update from table SET mark='index'
上面兩個效果是一樣的。
接著問題就來了,就像織夢那樣,如果我想將一篇文章添加一個熱門,但是不想刪除其它標(biāo)識在呢么辦,或者我就想刪除一個標(biāo)識,我也不知道以前有什么標(biāo)識。
以下是添加標(biāo)識
復(fù)制代碼 代碼如下:
update from table SET mark=mark |1|2
不要問我為什么用|這個東東,上面的意思是添加index、best兩個標(biāo)識,如果只添加hot標(biāo)識,寫成|4就可以了
下面是刪除標(biāo)識
復(fù)制代碼 代碼如下:
update from table SET mark=mark &~4&~1
好了,我先說了更新,下面說查詢
復(fù)制代碼 代碼如下:
SELECT * FROM table WHERE FIND_IN_SET('hot',mark)
這個是最簡單的查詢方法,也可以用hot所在位置的二進制數(shù)4來替代查詢,效率是一樣的
也可以這么寫:
復(fù)制代碼 代碼如下:
SELECT * FROM table WHERE mark & 1
相關(guān)文章
MySQL的Replace into 與Insert into on duplicate key update真正的不同
今天聽同事介紹oracle到mysql的數(shù)據(jù)migration,他用了Insert into ..... on duplicate key update ...,我當(dāng)時就想怎么不用Replace呢,于是回來就仔細(xì)查了下,它們果然還是有區(qū)別的2014-02-02
利用mysql事務(wù)特性實現(xiàn)并發(fā)安全的自增ID示例
項目中經(jīng)常會用到自增id,比如uid,下面為大家介紹下利用mysql事務(wù)特性實現(xiàn)并發(fā)安全的自增ID,感興趣的朋友可以參考下2013-11-11

