1

いくつかの引数をストアド プロシージャに受け取ります。これらの引数は NVARCHAR です。

これらの値の一部を FLOATS にキャストする必要がある場合、問題が発生します。

@VALUE1 NVARCHAR(100)

DECLARE @ChangedValue SET @ChangedValue = CAST(@Value1 AS FLOAT)

例 @Value1 = "0,001"

「0.001」を期待しているため、問題が発生します

入力の形式を変更することはできませんが、SQL サーバー側で何らかの方法で変更できますか? すべての「、」を「。」に変更することにより、代わりは?

よろしく、ケン

4

3 に答える 3

3

あなたが使用することができます@VALUE1 = REPLACE(@VALUE1, ',', '.')

しかし、これは恐ろしいことのようです!

于 2008-11-20T10:02:05.737 に答える
0

あなたのデータには詳しくありませんが、1,000 などのコンマで有効な値がないことを確認してください。これを replace を使用して 1.000 に変更すると、関連する実際の数が大幅に変わります。

無効な数字をフィールドに配置できないように、ユーザー インターフェイスを修正します。また、データをクリーンアップしたら、数値が特定の範囲内または有効な数値である必要があるデータベースのテーブルに制約を設定します。そうすれば、まず悪いデータがフィールドに入ることができなくなります。

于 2008-11-20T15:27:15.097 に答える
0

ミッチが言ったように、それはそれほど良い音ではなく、最初に提供されたパラメーターが float 型だった方がはるかに良いでしょう。彼は今のところあなたの問題を解決する解決策をあなたに与えましたが、彼が指摘したように、あなたは将来何らかの問題に遭遇するかもしれません.

このプロシージャーは何らかのアプリケーション・コードによって呼び出されていると想定しており、これらの数値はユーザー入力であると思われます。その場合、アプリケーション レベルで変換を行う必要があります。これは、ロケール設定を処理し、ユーザー入力の形式を制御できる唯一の場所であるためです。

于 2008-11-20T12:13:02.977 に答える