39

在庫があるかどうかのtrue/falseフィールドを作成したかったのです。

ブール値(に変換されます)に設定したかったtinyint(1)のですが、在庫がある場合は1、在庫がない場合は0に設定しました。

ベンダーからフィードをもらっているので、「在庫がいくつ合格したらどうなるのか」と思いました。

それで、1より大きい数を挿入するとどうなるのだろうかと思いました。デフォルトは1だと思いました。

驚いたことに、127までの任意の数、デフォルトを超えるものは127まで保持できるようになります。

誰かが理由を説明できますか?

4

4 に答える 4

58

符号付きTINYINTデータ型は、-128 ~ 127 の整数値を格納できます。

ただし、TINYINT(1)格納できる最小値または最大値は変更されません。そのタイプの値が出力として出力されるときに、1桁だけを表示するように言っているだけです。

于 2010-12-09T18:22:05.113 に答える
8

tinyintデータ型は1バイトのストレージを利用します。1バイト(-128〜127)を使用して、256個の可能な整数値を格納できます。として定義するとtinyint unsigned、負の値は破棄されるため、(0から255)を格納できます。

于 2010-12-09T18:32:31.400 に答える
6

MySQL がこれを処理する方法については、こちらを参照してください。MySQL > 5.0.5 を使用する場合はBIT、データ型として使用できます (古いバージョンBITでは として解釈されTINYINT(1)ます。ただし、(1)-part は表示幅であり、内部の長さではありません。

于 2010-12-09T18:39:06.413 に答える