0

NUMBERというテーブルで呼び出されるフィールドがありますTEST

NUMBER is int(8) Unsigned Zerofill Not Null

今、このフィールドに負の数が必要ですが、それでもゼロで埋めたいと思います。たとえば-00023419

署名付きに変更できますが、ゼロで埋められないようです。

私が行う場合: alter table test modify number int(8) signed zerofill not null- 署名されていないゼロフィルのままです

私が行う場合: alter table test modify number int(8) zerofill not null- 署名されていないゼロフィルのままです

私が行う場合: alter table test modify number int(8) signed not null- 署名されますが、ゼロフィルはありません

署名済みに設定したときに、負の数値を入力してゼロフィルに変更しようとすると、数値が変更され00000000、すべてが再び署名なしに設定されました。ゼロで埋められた数字に署名することは不可能ですか?

4

3 に答える 3

3

https://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html言います:

ZEROFILL数値カラムを指定すると、MySQL は自動的にUNSIGNED属性をカラムに追加します。

2006 年にバグとして報告され、「バグではありません」として閉じられました。 https://bugs.mysql.com/bug.php?id=24356


あなたのコメントについて:

これは、mysql データベースに負のゼロで埋められたデータを持っている人は誰もいないということですか?

右。ZEROFILL の最も一般的な使用例は、郵便番号や銀行口座番号などに固定桁数を使用することです。いずれにせよ、これらのケースは負の値をサポートしていません。

PHPでゼロフィルに変換できますか?

はい、PHP でゼロ パディングを使用して数値をフォーマットできます。

<?php

$n = -1234;
printf("Number is %08d\n", $n);

出力:

Number is -0001234

/で実行できるより適切な書式設定については、http://php.net/manual/en/function.sprintf.phpを参照してください。printf()sprintf()

于 2016-10-24T20:11:50.370 に答える
1

ZEROFILL は UNSIGNED を意味します。

MySQL リファレンス マニュアル https://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html

数値カラムに ZEROFILL を指定すると、MySQL は自動的に UNSIGNED 属性をカラムに追加します。

すべての潜在的な問題があるため、非標準の MySQLZEROFILL属性を使用することは避けています。

于 2016-10-24T20:13:10.973 に答える
-1

カラムが外部キーまたは主キーである場合、MySQL はこの変更を許可しません。これは事前に行う必要があります。

于 2016-10-24T20:12:08.603 に答える