Re: [SQL ] 請問這個查詢的語法該怎麼下?(Sql Server)
※ 引述《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
05/03 14:52, 2F
→
05/03 18:06, , 3F
05/03 18:06, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 6 篇):