2018年5月1日 星期二

將數值表徵文字淨化成數值,以SQLite為例

有些原始資料儲存數值的文字表徵,例如"99,550",包含有雙引號及千分位號,而無法進行數值運算,因此需要將數值表徵文字轉成數值的資料淨化程序。
首先要先把數值表徵文字轉成您所運用SQL系統型態轉換機制能處理的數值表徵文字,以SQLite為例,該系統無法自動去除「"」(雙引號)或「,」(千分位號)字元,只能辨識「99550」形式的數值表徵文字,所以我們先運用 replace 函數刪除字串內的雙引號及千分位號:

select 建議金額, replace(replace(建議金額, '"', ''), ',', '')  建議金額數值
from suggesions

承上,文字轉換成系統型態轉換機制能處理的數值表徵文字,就利用 cast 表示式求得數值:

select 建議金額, cast(replace(replace(建議金額, '"', ''), ',', '') as decimal) 建議金額數字


from suggesions

最後,以上式確認轉換無誤後,再利用 update 陳述式將表格內的數值表徵文字轉型成數值,完成資料淨化:

update suggesions
set 建議金額 = cast(replace(replace(建議金額, '"', ''), ',', '') as decimal)

沒有留言:

張貼留言