當我們添加一個新的表格中,我們犯了一個錯誤:一個領域是一個varchar(255),但我們必須寫連接查詢。 所以我們改變表格做一個char(6)。MySQL將varchar轉換爲char是什麼?
我的問題是:什麼在這種情況下,MySQL的呢? 它修剪正確嗎?
當我們添加一個新的表格中,我們犯了一個錯誤:一個領域是一個varchar(255),但我們必須寫連接查詢。 所以我們改變表格做一個char(6)。MySQL將varchar轉換爲char是什麼?
我的問題是:什麼在這種情況下,MySQL的呢? 它修剪正確嗎?
不是什麼MySQL的或不這樣做,爲什麼不只是改變自己之前轉換數據的擔心。
例如
UPDATE YourTable
SET YourField = LEFT(YourField,6);
ALTER TABLE YourTable MODIFY COLUMN YourField Char(6)
你應該注意的是,如果你的列數據太長,它不會讓你做ALTER假設啓用嚴格的SQL模式見SHEF的完整的答案
的MySQL甚至不會讓你改變表如果有任何情況,你會丟失數據(例如,一行有一個字段的文本超過六個字符的條目),所以你最好將數據轉換成你認爲合適的方式。
它將嘗試轉換格式。在你的情況下,該列是一個字符串類型,所以如果沒有啓用嚴格的SQL模式,它將截斷該值。
當您使用CHANGE或MODIFY更改數據類型時,MySQL會嘗試 儘可能將現有列值轉換爲新類型。
警告此轉換可能導致數據的改變。例如,如果您縮短字符串列,則可能會截斷值 。爲了防止 操作成功執行的,如果轉換到新的數據類型 會導致數據丟失,使用 ALTER TABLE之前啓用嚴格的SQL模式(參見5.1.6節,「SQL服務器模式」)。
閱讀罰款warning下降了頁面的五分之二。
+1 –
你爲什麼要加入char字段。最好使用一個整數。 –