看板 PHP 關於我們 聯絡資訊
mrbigmouth:推全是精華 03/15 04:53
mervynW:大推. 03/15 09:53
liaosankai:推經驗分享 03/15 10:26
LaPass:推 03/15 10:28
chrisQQ:bit 運算超好用! 03/15 14:08
kusoayan:可以解釋一下什麼是用 bit 運算嗎@@? 03/15 16:05
mervynW:我猜是早期mysql沒有boolean, 所以用 bit(1) 來代替 03/15 16:31
characterlu:受教了,還是聲明一下,因為是新手,也許問的問題會讓人 03/15 16:33
characterlu:覺得不經思考或問錯,這我願意受教,但只是想不想回答是 03/15 16:34
characterlu:用是否為作業去思考,那跟態度或內容恐怕就無關了 03/15 16:34
mervynW:多個boolean也行 bit(3) ex rwx 03/15 16:35
LaPass:我還以為是拿個int當一串bit那種位元運算的技巧 囧" 03/15 16:38
你的是對的 XDD
mervynW:用 int 所佔得空間比較大. bit 你知道的. 03/15 17:04
我是指位元運算,不是儲存位元… orz 打得太快了 以 unsigned tinyint 來說,值範圍是 0 ~ 255, 255 在二進位下是 11111111,換句話說也就是可以儲存 8 個二元選項, 舉個實際例子好了, 如果使用者有三個可以自行設定的項目: 是否收到 EDM、是否收簡訊、是否收到優惠卷 資料表可以是三欄位式的設計 recive_edm enum yes,no recive_sms enum yes,no recive_coupon enum yes,no 也可以是一欄式的設計 recive_option unsigned tinyint 0 (000), 1(001), 2(010), 3(011) … 在一欄式的設計裡,可以透過位元運算來處理, php 裡先定義一下: define ('_RECIVE_EDM', 0x01); define ('_RECIVE_SMS', 0x02); define ('_RECIVE_COUPON', 0x04); 這樣如果要從資料表中找出「願意收到 EDM」而且「願意收到簡訊」的使用者, 判段式可以像以下這樣寫 前略… WHERE `recive_option`&' . (_RECIVE_EDM | _RECIVE_SMS) .' …後略 如果某使用者設定自己「願意收到簡訊」、「願意收到優惠倦卷」, 更新可以像下面這樣寫 前略… SET `recive_option`='. (_RECIVE_SMS | _RECIVE_COUPON) .' …後略 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.113.121 ※ 編輯: gpmm 來自: 61.219.113.121 (03/15 21:52)
LaPass:啊啊~ 果然是這個~ 不過我沒在資料庫中試過說 03/15 21:59
Canboo:這篇的啟蒙,我要花點時間好好玩一下這玩意了... 03/15 23:44
kusoayan:謝謝!Y 03/16 00:51
coldollsheep:挖!!!這篇讚讚讚 從來沒這樣玩過 03/18 21:04
JYHuang:...原來可以這樣搞,我之前還想破頭用log來換算2進位 XD 03/21 16:27
myans:bit運算 正點...受教了 03/26 17:56