1

[Return rate]には、次のような値があります。

20.0%
17.1% 
etc

私のクエリでは、この値を計算に使用したいと思います。

したがって、最初に、を'%'空の文字列に置き換え''ます。

REPLACE([Return Rate], '%' ,'') AS [Test]

これは機能し、[返品率]が「20.0%」の場合は「20.0」のような値になります。

次に、この[Test]値を計算に使用しようとします。たとえば、次のようになります。

(REPLACE([Return Rate], '%' ,'') * 10) AS [Test]

しかし、論理的にエラーが発生するため、このテキスト値を変換して計算を実行しようとします。

CAST ( REPLACE([Current Xelus FE Return Rate], '%' ,'') AS decimal(2,1))  [Decimal Test]

そして、ここでエラーが発生します。

Arithmetic overflow error converting varchar to data type numeric.
Warning: Null value is eliminated by an aggregate or other SET operation.

誰かがこのエラーに対する答えを持っていますか?どうもありがとう、

4

2 に答える 2

0

行のいずれかにnull値が含まれている場合、このエラーが発生します。次のようにIsNullを試してください。

CAST( 
 IsNull( 
  REPLACE([Current Xelus FE Return Rate], '%' ,'') 
 , '0.0')
AS decimal(5,1))  [Decimal Test]

データに数値以外の値(前述のように、「N / A」などの値)が含まれている場合は、IsNumeric()関数を使用してそれらを削除できます。

CAST( 
  CASE WHEN IsNumeric(
    IsNull( 
      REPLACE([Current Xelus FE Return Rate], '%' ,'') 
    , '0.0')
  ) = 1 THEN IsNull(REPLACE([Current Xelus FE Return Rate], '%' ,''),'0.0')
  ELSE '0.0' 
  END
AS decimal(5,1))  [Decimal Test]
于 2013-02-27T14:07:19.993 に答える
-1

FLOATにキャストしてみてください-decimal(2,1)では不十分です:

CAST ( REPLACE([Current Xelus FE Return Rate], '%' ,'') AS FLOAT)

その後、さらに計算を行うことができるはずです

CAST ( REPLACE([Current Xelus FE Return Rate], '%' ,'') AS FLOAT) * 10
于 2013-02-27T14:10:47.690 に答える