2015-02-23 48 views
1

我正在創建一個API並處理遺留數據庫,該數據庫的值不一致,爲number_bedrooms。在7000個單元中,43個具有非整數/數值。如何處理臥室數量不一致的數據值?

有效整數的範圍基本上是1-7。有些具有「2 +閣樓」或「2 +閣樓」或「工作室」或「5+」等值。

由於這是一個傳統的數據庫,我真的不能去改變事物(許多應用程序都使用這一點,可以在使用「2 +閣樓」硬編碼的SQL查詢)我想創建一個新的int_bedrooms列。

喜歡的東西:

UPDATE table 
SET int_bedrooms = number_bedrooms 
WHERE 
number_bedrooms IS NOT NULL and number_bedrooms > 0 

這將是最可行的方法?此外該功能(轉換,CAST),我可以使用可靠變換:

'5+' into '5' 
'2 + Loft' into '2' 
'2 + Den' into '2' 
+0

這不是一個答案,我不會假裝它是,但你爲什麼不只是手工做43記錄你自己?無論如何,你將不得不測試/檢查它們... – jdu 2015-02-23 18:58:08

+0

@jdu - 我正在考慮,但這些在當前的應用程序中使用,一些應用程序可能有硬編碼SQL查詢說,「number_bedrooms IN(」2 +閣樓「)等我不想」打破「任何東西 – 2015-02-23 18:59:04

+0

但你爲什麼需要將這些數據轉換爲INT?解決方案取決於你的答案,因爲如果你不打算有這些」5 +「等等,再比如你可以用INT創建新的字段,並將那些43條記錄的值設置爲5,2等......但是如果你認爲未來可能會出現相同的值 - 爲什麼你需要以擺脫這些? – Alex 2015-02-23 19:08:17

回答

-1
UPDATE table 
SET int_bedrooms = CAST(number_bedrooms AS UNSIGNED) ; 
+0

與我的需要'CONVERT(field,UNSIGNED INTEGER)'有什麼區別? – 2015-02-23 19:16:02

+0

http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html CONVERT主要是關於** CONVERT()提供了一種在不同字符集之間轉換數據的方法**我剛剛重讀手冊和你的情況這兩個陳述是相同的。 – Alex 2015-02-23 19:19:19