我試圖創建一個用整數替換varchar(50)字段的清理表。原始字段有偶爾的文本值,我想將其轉換爲0或空值。 我可以在select語句中做到這一點很好,但嘗試創建我的表時會出錯。將文本列轉換爲MySQL中的整數
下面是使用字符串小例子:
/* This works */
DROP TABLE IF EXISTS mytest;
CREATE TABLE mytest
AS
SELECT convert("123", unsigned) AS mynum;
/* This works, returning a row of 0 */
SELECT convert("TEST", unsigned) AS mynum;
/* But this fails, with: Truncated incorrect INTEGER value: 'TEST'*/
DROP TABLE IF EXISTS mytest;
CREATE TABLE mytest
AS
SELECT convert("TEST", unsigned) AS mynum;`
什麼是錯的上方,有沒有更好的方式來完成我想要什麼?謝謝您的幫助。
這不起作用。更改列將所有值恢復爲0. – 2013-01-07 03:22:20
@ cassi.lup:如果'mytest.mynum'中的值是存儲爲文本的數字(例如「23」),那麼當列被更改時,它將被存儲爲整數(例如23)。如果該值是一個字符串(例如「foo」),那麼將數據類型更改爲整數將將該值更改爲0.如果該值是以數字開頭的字符串(例如「23foo」),則將數據類型更改爲整數將值存儲爲23.無論如何,由於OP要求一種方法來維護任何現有的整數並將文本值轉換爲零,我的回答是正確的,不應該得到一個低估。 – dnagirl 2013-01-07 12:29:25