質問

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

これらの値の一部をFLOATSにキャストする必要があるときに問題があります。たとえば、これらの値はたとえば

@ VALUE1 NVARCHAR(100)

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

E.g。 @ Value1 =" 0,001"

" 0.001"を期待しているように、問題を教えてください

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

敬具、ケン

役に立ちましたか?

解決

@ VALUE1 = REPLACE(@ VALUE1、 '、'、 '。')

を使用できます

これはやるのが恐ろしいことのようです!

他のヒント

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top