2013-10-31 100 views
4

我有一個列表airline_id,它是表路由中的varchar,現在我想將該值複製到int類型的airline_id_int列中。我不能讓語法雖然權利..將varchar轉換爲mysql中的int

這是我有:

UPDATE route SET airline_id_int = CAST(airline_id, int); 

回答

9

您必須使用AS關鍵字CAST

update route set airline_id_int = cast(airline_id AS UNSIGNED) 

您可以使用

update route set airline_id_int = cast(airline_id AS SIGNED) 

爲好。

+0

你不能直接澆鑄在MySQL –

+0

優秀爲int!我在列中找到了一些非數值,更具體地說是「\ N」。我如何將所有的「\ N」變成0,其餘的如上所述? – user1907859

+2

您可以使用REPLACE功能。例如,如果列文本是「A \ NISHV \ NARYA」,請使用REPLACE('A \ NISHV \ NARYA','\ N','0')。 – MusicLovingIndianGirl

3

嘗試以下操作:

update route set airline_id_int = cast(airline_id AS UNSIGNED); 

它不能直接轉換爲int。 如果您需要有符號整數,請將UNSIGNED替換爲SIGNED

1
update route set airline_id_int = cast(airline_id as signed); 

update route set airline_id_int = cast(airline_id as unsigned); 

,如果它可以是負的

0

試試這個

update route set airline_id_int = CONVERT(airline_id, UNSIGNED); 
update route set airline_id_int = CONVERT(airline_id, SIGNED);