2017-07-04 7 views
0

データベースの列を変更する小さなC#ツールを書いています。また、ユーザーの入力に応じて、特定の要素を列に乗算する必要があります。もちろん それはしかし、これは非常に間違ったユーザー入力の場合には、データ種別「TEXT」の列を列のデータ型を考慮していないSQL:列を掛けるときにデータ型を考慮してください。


UPDATE table SET column = column * factor


で動作しますエラーメッセージなしで乗算され、ゼロになります。

私は私のC#プログラムに列の型を取得し、それを更新する前にテストすることができますが、私の場合は、これは遅く、


SELECT * FROM sqlite_master 

から取得直接sqliteの内の必要なフィードバックに方法はありますか?

+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)、例えば 'typeof(column)= 'integer'' –

答えて

0

あなたは でこの質問を示すように、typeof演算()は数値以外の値をフィルタリングするために使用shoudl、例えばtypeof演算(列)=「整数」の

パナギオティスKanavosによるこの答えが正解である場合には、私は実際にこれを試しましたが、動作しなかったタイプのために大文字(整数と整数)を使用しました。

答えのためのThx!

関連する問題