列Percentagevarchar(10)のテーブルがありますそのテーブルのデータは
Pecentage
2/10
4/10
6/10
..............
今、私は上記のパーセンテージを小数に変換しなければならないので、今私はこのようにしています。TabNameからCAST(10進数としてのパーセンテージ)を選択します。次の例外が発生します。データ型varcharを数値に変換中にエラーが発生しました。
0.2、0.4、0.6のような結果を得たい
列Percentagevarchar(10)のテーブルがありますそのテーブルのデータは
Pecentage
2/10
4/10
6/10
..............
今、私は上記のパーセンテージを小数に変換しなければならないので、今私はこのようにしています。TabNameからCAST(10進数としてのパーセンテージ)を選択します。次の例外が発生します。データ型varcharを数値に変換中にエラーが発生しました。
0.2、0.4、0.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
これを試して
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))
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