我有一個sqlite3數據庫。其中一列大多數是整數值(正值或負值)。在少數情況下,該值爲「未找到」或「缺失」或其他文本字符串。用NULL替換字符串的實例
我想用NULL替換所有那些非整數值。列類型是TEXT超出原始必要性。
是否有一個聰明的方法來做到這一點與UPDATE ... WHERE子句,而不是總的東西,就像拉到python更正?
我有一個sqlite3數據庫。其中一列大多數是整數值(正值或負值)。在少數情況下,該值爲「未找到」或「缺失」或其他文本字符串。用NULL替換字符串的實例
我想用NULL替換所有那些非整數值。列類型是TEXT超出原始必要性。
是否有一個聰明的方法來做到這一點與UPDATE ... WHERE子句,而不是總的東西,就像拉到python更正?
您可以使用UPDATE
用正則表達式,像這樣:
UPDATE MyTable
SET text_column = NULL
WHERE text_column REGEXP '[^-0-9]+'
這將清除掉包含一個或多個非數字字符的所有領域。
您可以更新其中的值不能轉換成整數的所有行:
UPDATE MyTable
SET MyColumn = NULL
WHERE CAST(MyColumn AS INTEGER) != MyColumn;
我也建議這樣做後更改列的類型爲數字。 –
默認情況下不執行REGEXP。 –
是的,這看起來像一個光滑的解決方案,直到我發現REGEXP不是默認功能。沒有找到關於如何安裝它的明確說明,以便我可以使用從命令行調用它以及通過我的Python腳本進行訪問。 – user3556757