3

Oracle のバックグラウンドを持っている私は、SQL Server がこのような些細な懸念のためにどのように苦労しているのか信じられません。

varchar列の数値を数値列に解析したいだけです。問題は、数値が米国スタイルではなく、ドイツ スタイルの形式であるということです。つまり、小数点と桁区切り記号が入れ替わります。

例:

1.767,13 equals one thousand and seven hundred ...

私はすべての MSDN 記事に目を通しました。CAST追加のパラメーターは受け入れません。日付/時刻と金額の変換にのみ適用されるように見えるスタイルCONVERTを取ることができます。さらに、カルチャパラメータを使用するものを見つけましたが、2008 バージョンではまだ利用できないようです。TRY_PARSE

私はクラッジの解決策を思いつきましたが、それだけではありません!

cast(replace(replace([TOTALVALUE],'.',''), ',','.') as numeric(20,2))

最初に桁区切り記号が削除され、次に小数点がコンマからドットに変更されます。それは機能しますが、堅牢です。

コメントと回答ありがとうございます!

4

3 に答える 3

2

がっかりして申し訳ありませんが、はい、

cast(replace(replace([TOTALVALUE],'.',''), ',','.') as numeric(20,2))

する方法です。

于 2012-05-31T09:10:46.017 に答える
2

完全を期すために、PARSE の MSDN ドキュメントへのリンク、コード サンプル、およびカルチャ文字列の表 (米国英語の場合は「en-US」、ドイツ語の場合は「de-DE」など) へのリンクを示します

于 2012-06-17T19:30:32.120 に答える
0

申し訳ありませんが、これはまだ役に立ちませんが、SQL Server 2012 にはカルチャ対応PARSE機能があります。

于 2012-05-31T09:03:51.137 に答える