1

奇妙な問題があります。

私のクエリでは、5つの列を選択し、そのうちの2つはnvarchar数値(数値と精度のポイントのみを含む)の形式であり、他の3つはとuniqueIdentifierですnvarchar

Floatselectステートメントでこれらの2つの列をキャストしたいのですが、エラーが発生します

nvarcharをfloatにキャストできません。

これらすべての値の形式を何度もチェックしました。私を信じてください、彼らは大丈夫です。

しかし、これら2つの列を選択し、それらをキャストしてfloatにすると、クエリは正常に実行されます。

この件に関して助けていただければ幸いです。

ここにもクエリを貼り付けることができます。しかし、クエリ全体は100行を超えており、これは書き込みと読み取りにイライラします。

4

2 に答える 2

3

答える前に、間違いなくあなたからのより多くの情報が必要になります。コードの一部 (または問題の小さな複製) を投稿できますか? おそらくあなたのテーブル定義も?

値はすべて数値なので、なぜ列を nvarchar のままにしておくのでしょうか?

最後に、ドル記号 ($) を含むデータはありますか?

これは機能します:

DECLARE @Text nvarchar(100)

SET @Text = '1234.567'

SELECT CONVERT(float, @Text) AS ColumnValue

これもそうです:

DECLARE @Text nvarchar(100)

SET @Text = '    1234.567    '

SELECT CONVERT(float, @Text) AS ColumnValue

しかし、これはしません:

DECLARE @Text nvarchar(100)

SET @Text = '$1234.567'

SELECT CONVERT(float, @Text) AS ColumnValue
于 2012-07-02T14:29:13.830 に答える
0

クエリを見ないとわかりませんが、これでうまくいくはずです:

SELECT CONVERT(Float(2), LTRIM(RTRIM(<nVarchar Column>))) AS Amount FROM ......
于 2012-07-02T08:03:05.527 に答える