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