Re: [SQL ] 請問這個查詢的語法該怎麼下?(Sql Server)

看板Database作者 (周星星)時間16年前 (2008/05/03 13:46), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串4/6 (看更多)
※ 引述《starjou (周星星)》之銘言: : 如果能更動欄位結構的話,我會用一個無號整數欄位來當各種 language 的 flag : 如果用 8 位元的整數就能記載 8 種語言的狀況,big int 可以記 64 種,要是還不夠, : 再加欄位。然後一個人只要有一筆資料。之後用位元運算來維護這個欄位, : 這樣 select 也比較容易。 : : 只是要另位做一份參照文件,第一個 bit 是什麼語言,第二個 bit 是什麼語言, : 給維護程式的人看。 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 219.80.138.232 : 推 artingo:這方法不錯,這樣要查精通多種語言的人就不用很多巢狀結構 05/03 09:25 : 推 JoeHorn:可惜 SQL 裡面的運算子不多,這樣作會多操 DB data I/O 。 05/03 11:02 不知道所謂運算子不多的意思是什麼? MySQL 裡位元運算是有的。 ex: 一個 byte 00000000 分別代表 中英法德日義韓西 好了,欄位名稱 lang_flag 會中文的 WHERE lang_flag & 128 <> 0 不會中文的 WHERE lang_flag & 128 = 0 多個語言就多個條件 AND 串連 (也可以先自己加起來,不過比較容易搞錯) 要維護某個 tag, 例如設成會中文 SET lang_flag = lang_flag | 128 設成不會中文 SET lang_flag = lang_flag & ~128 多個言語的話,可以多次指定,也可以在從 form 的八個 checkbox 去加總, 直接設定,就不用用到 bit 運算。 以 PHP 為例,form 元素如下: <input type="checkbox" name="lang[]" value = 1>西班牙文 <input type="checkbox" name="lang[]" value = 2>韓文 <input type="checkbox" name="lang[]" value = 4>義大利文 ........ server 接受時未勾選的元素值並不會傳回,用 foreach 將 lang 陣列加總 即為要填入 lang_flag 的值。 想請教上述會有 IO 負荷的問題嗎?對這方面不是很了解 ... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.80.138.232 ※ 編輯: starjou 來自: 219.80.138.232 (05/03 13:49)

05/03 14:48, , 1F
沒錯,您提的這個解法是非常漂亮的解法。
05/03 14:48, 1F

05/03 14:52, , 2F
我在原本推文時沒想到,不好意思。 PS. 可用 array_sum()
05/03 14:52, 2F

05/03 18:06, , 3F
了解了,謝謝 :)
05/03 18:06, 3F
文章代碼(AID): #186_nID8 (Database)
討論串 (同標題文章)
文章代碼(AID): #186_nID8 (Database)