2015-11-06 196 views
1

我有一個sqlite3數據庫。其中一列大多數是整數值(正值或負值)。在少數情況下,該值爲「未找到」或「缺失」或其他文本字符串。用NULL替換字符串的實例

我想用NULL替換所有那些非整數值。列類型是TEXT超出原始必要性。

是否有一個聰明的方法來做到這一點與UPDATE ... WHERE子句,而不是總的東西,就像拉到python更正?

回答

3

您可以使用UPDATE用正則表達式,像這樣:

UPDATE MyTable 
SET text_column = NULL 
WHERE text_column REGEXP '[^-0-9]+' 

這將清除掉包含一個或多個非數字字符的所有領域。

+2

我也建議這樣做後更改列的類型爲數字。 –

+0

默認情況下不執行REGEXP。 –

+0

是的,這看起來像一個光滑的解決方案,直到我發現REGEXP不是默認功能。沒有找到關於如何安裝它的明確說明,以便我可以使用從命令行調用它以及通過我的Python腳本進行訪問。 – user3556757

2

您可以更新其中的值不能轉換成整數的所有行:

UPDATE MyTable 
SET MyColumn = NULL 
WHERE CAST(MyColumn AS INTEGER) != MyColumn;