MySQLの「unsigned」は何を意味し、いつ使用するのですか?


278

MySQLで「署名なし」とはどういう意味ですか、いつ使用すればよいですか?

回答:


527

MySQLは言う:

すべての整数型は、オプションの(非標準の)属性UNSIGNEDを持つことができます。符号なしタイプは、列で負でない数値のみ許可する場合、 または列に大きな数値範囲が必要な場合に使用できます。たとえば、INT列がUNSIGNEDの場合、列の範囲のサイズは同じですが、そのエンドポイントは-2147483648および2147483647から0および4294967295にシフトします。

いつ使用しますか?

この質問を自問してみてください:このフィールドには負の値が含まれますか?
答えが「いいえ」のUNSIGNED場合、データ型が必要です。

よくある間違いはINTゼロから始まる自動インクリメントである主キーを使用することですが、タイプはSIGNEDです。その場合、負の数値には一切触れず、可能なIDの範囲を半分に減らします。


8
注文の特定のアイテムの数量や2つの場所の間の距離など、物事の「サイズ」を表す値は通常、符号なしになります
SingleNegationElimination

31
正解です。自動インクリメントIDの場合、mysqlがデフォルトの整数を符号なしにしないのは奇妙に思えますか?
Wired00 2014年

3
より明確な答えが必要な場合は、このstackoverflow.com/a/11515613/6335029を
NaveenDA

positiveゼロ以外の正の数値のみを処理することがより一般的であるように、属性もあったことを本当に望みます。
still_dreaming_1 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.