プログラミング初心者の Perl 入門日記

Perl超初心者の勉強記録です。失敗もすべて公開中!

今回で SET型も最後です♪


★ mixi もそうだけど、Facebook でも幽霊会員の私。
友人の招待とかアップデートとか、この人友達じゃない?とか
お知らせメールが来るのが煩わしくなりつつあります(^_^;)



SET型に少し時間かかってしまったかも(^_^;)
でも今回で最後です……たぶん。

ENUM型では文字列の代わりにインデックスで
指定する方法がありましたよね?

SET型ではビットが割り当てられるから、
そのビットで指定することも可能です。

でも私、このビットって苦手です(X_X)

余計ややこしいから便利に感じないけど、
勉強ですから一応やります……。

今まで使ってる例(cat,dog,monkey)で見てみると
こんな感じです:

cat → 0001 →1
dog → 0010 →2
monkey → 0100 →4

最初は「???」って思ったんだけど、
2進数の1の位置に注目してください。

1番目の値である cat は 0001 で、1は1ケタ目。(10進数では1)
2番目の値の dog は 0010 で、1は2ケタ目。(10進数では2)
3番目の monkey は 0100 で、1は3ケタ目。(10進数では4)

だから cat と dog であれば 0011 で、10進数は3。
dog と monkey なら 0110 で、10進数は6。
cat と monkey なら 0101 で、10進数は5。
3つ全部なら 0111 で、10進数は7。

ってことなんじゃないかなぁ……?

という訳で合ってるかどうか試してみます。
分かりやすいように上記の順に並べてみました↓

INSERT INTO test12 VALUES(1);
INSERT INTO test12 VALUES(2);
INSERT INTO test12 VALUES(4);
INSERT INTO test12 VALUES(3);
INSERT INTO test12 VALUES(6);
INSERT INTO test12 VALUES(5);
INSERT INTO test12 VALUES(7);


結果はこちら↓

animal
cat
dog
monkey
cat,dog
dog,monkey
cat,monkey
cat,dog,monkey

自分の理解で合ってたみたいです~。
でもこんなややこしいの使うかなぁ……?


<ご案内>----------------------------------------------------------------------------------------

uru.jpg


【売る】プログラマー学校

----------------------------------------------------------------------------------------<ご案内>



こちらのページを参考にさせていただきました↓
SET型 - MySQLのデータ型- MySQLの使い方
MySQL::MySQL4.1リファレンスマニュアル::6.2.3.4 SET 型
2進減算
ありがとうございました<(_ _)>



関連記事
  1. 2012/08/24(金) 16:00:45|
  2. データベース
  3. | コメント:0
<<MySQL のファイル構造をちょっと見てみる | ホーム | さらに SET型の続きです>>

コメント

コメントの投稿


管理者にだけ表示を許可する