0

列Percentagevarchar(10)のテーブルがありますそのテーブルのデータは

Pecentage
2/10
4/10
6/10
..............

今、私は上記のパーセンテージを小数に変換しなければならないので、今私はこのようにしています。TabNameからCAST(10進数としてのパーセンテージ)を選択します。次の例外が発生します。データ型varcharを数値に変換中にエラーが発生しました。

0.2、0.4、0.6のような結果を得たい

4

3 に答える 3

6

そのvarchar形式(2/10)をfloatに変換することはできません。個々の文字列を取得してから除算を実行する必要があります。

Declare @Sample Table
(Percentage varchar(10))

Insert into @Sample
values
('2/10'),('4/10'),('6/10')

;With CTE (Numerator,denominator)
as
(
  Select cast(substring(Percentage,0,charindex('/',percentage))as float),
  cast(substring(Percentage,charindex('/',percentage)+1,len(Percentage)) as float)
  from @Sample
)
select Numerator/denominator from CTE 

結果

(No column name)
0.2
0.4
0.6
于 2012-06-25T06:50:10.623 に答える
1

これを試して

declare @str varchar(20)='2/10'

select @str, CAST(LEFT(@str,CHARINDEX('/',@str)-1) as DECIMAL(10,5))/CAST(RIGHT(@str,LEN(@str)-CHARINDEX('/',@str)) as DECIMAL(10,5))
于 2012-06-25T06:50:07.533 に答える
0
Declare @Temp Table
(Percentage varchar(10))

Insert into @Temp
values
('2/10'),('4/10'),('6/10')


select 
convert(float,SUBSTRING (Percentage ,0 , charindex('/',Percentage)))/    
convert(float,SUBSTRING (Percentage ,charindex('/',Percentage)+1,len(Percentage))) 
as Result

from @Temp
于 2012-06-25T07:35:19.083 に答える