2011-07-21 7 views
0

新しいテーブルを追加すると、間違っていました。フィールドはvarchar(255)でしたが、結合クエリを記述する必要があります。 したがって、テーブルを変更してchar(6)を作成します。MySQLはvarcharをcharに変換するのは何ですか?

私の質問は:この場合、MySQLは何ですか? それは右にトリムですか?

+0

なぜあなたはcharフィールドに参加しますか?整数型の方が良い。 –

答えて

3

変更前に自分でデータを変換するのではなく、MySQLが何をしているのかを気にする必要はありません。

UPDATE YourTable 
SET YourField = LEFT(YourField,6); 

ALTER TABLE YourTable MODIFY COLUMN YourField Char(6) 

あなたの列のデータが長すぎる場合、それはあなたが祭壇にはShefの完全な答えは

0

MySQLのも、あなたがテーブルを変更させません参照厳格なSQLモードを有効にすると仮定やらないことに注意してくださいいずれの場合にもデータが失われてしまいます(たとえば、行にはフィールドのテキストが6文字より長いエントリがあるため)、データの変換方法は適切です。

1

フォーマットを変換しようとします。あなたの場合、列は文字列型なので、厳密なSQLモードが有効になっていない場合は、値が切り捨てられます。

変更またはMODIFYを使用してデータ型を変更する場合、MySQLは新しいタイプだけでなく、可能に 変換既存の列の値にしようとします。

警告この変換によってデータが変更されることがあります。たとえば、 文字列を短くすると、値が切り捨てられることがあります。 新しいデータ型への変換が成功しないようにするには、 のデータが失われる場合は、 ALTER TABLEを使用する前に厳密なSQLモードを有効にします(5.1.6項「サーバーSQLモード」を参照)。

warningをページの2/5下に読みます。

+1

+1のドキュメント –

関連する問題