2016-07-04 13 views
3

私の問題は、私の顧客がWindowsのボックスでSQL Serverを実行し、国の設定が "ドイツ"に設定されていることです。SQL INSERT INTO:10進数のカンマ

これは、小数点が点ではないことを意味します.、それはコンマ,です!データベースへのdouble値を挿入する

は、これまでのところ、この

INSERT INTO myTable (myPrice) VALUES (16,5) 

作品罰金のように動作します。

問題が

INSERT INTO myTable (myPrice, myAmount) VALUES (16,5,10) 

のような文では小数点以下を持つ複数の値がある場合、私は、クエリ値と宛先フィールドの

番号が同じでないエラーを取得しに来ます。

どういうわけか値を「区切り」できますか?角括弧を追加しようとしましたが、これは機能しません。

残念ながら、既存のアプリケーションにいくつかのアドオンを書いているだけなので、OSやデータベースの言語設定を変更することはできません。

ありがとうございました! ev

+3

私は、最初の挿入物が機能するとは思えません。 –

+1

デリミタを区切ることはできません。コンマではなく小数点で値を渡すのはなぜですか?このために他の方法を一緒にハックする必要はありません。 – DavidG

+0

@DavidG彼はそれが小数ではないはずだと言っている。そのドイツ、彼らは10進数の代わりにコンマを使用します – Shank

答えて

1

データベースで許可されている形式でデータを配置する必要があります。カンマを使用してデータを入力した場合でも、数値計算が不安定になることがあります。

私がこのような状況に陥った場合は、カンマが可視性だけに必要であるかどうかを確認します。その後、コンマ形式で値を表示し、10進形式で保存します。

この方法でデータを簡単に数値として処理できます。しかし、UIや表示用にのみ前後に変更する必要があります。

これに基づいて、必要に応じて状況を詳しく説明することができます。

編集:私の理論を検証するには、この挿入ステートメントがデータベースに165または16.5を挿入しているかどうかを確認できます。

INSERT INTO myTable (myPrice) VALUES (16,5); 
    select from mytable where myprice <17; 
+0

お寄せいただきありがとうございます。 –

+0

この回答が参考になった場合は、投票してください。解決策を共有します。 –