2017-07-04 24 views
0

我正在編寫一個可以更改數據庫列的小c#工具。它也應該根據用戶輸入乘以一個特定的因子。 當然它與SQL:在乘以列時考慮數據類型


UPDATE table SET column = column * factor


工作然而這並沒有考慮列的數據類型,所以在一個錯誤的用戶輸入的數據類型爲「TEXT」一欄的情況下,也會相乘,不會有任何錯誤信息導致零。

我知道我可以在我的c#程序中獲取列的類型並在更新之前測試它,但是在我的情況下這會很慢並且不切實際,因爲我只使用sql的信息從


SELECT * FROM sqlite_master 

得到的是有沒有辦法直接在源碼所需的反饋?

+0

SQLite *會*在[數據類型 - 運算符](https://sqlite.org/datatype3.html#operators)中將數據類型考慮爲解釋。 '數學運算符上的操作數看起來沒有任何數值並且不爲NULL,它被轉換爲0或0.0。' –

+0

您應該使用'typeof()'過濾掉非數值,如[在此問題中所示] (https://stackoverflow.com/questions/32528759/how-to-check-if-a-value-is-a-number-in-sqlite),例如'where typeof(column)='integer'' –

回答

0

您shoudl使用的typeof()來過濾掉非數字值作爲 所示的這個問題,例如,其中的typeof(列)=「整數」

此答案由帕納約蒂斯Kanavos是正確的,我其實之前嘗試過,但我使用大寫(INTEGER與整數)的類型沒有工作。

Thx爲答案!