【问题标题】:sql server data type conversionsql server 数据类型转换
【发布时间】:2025-11-27 03:40:02
【问题描述】:
我有一个列 Percentage varchar(10) 的表格
该表中的数据是
Pecentage
2/10
4/10
6/10
..............
现在我必须将以上百分比转换为小数,所以现在我正在这样做。
从 TabName 中选择 CAST(十进制百分比)
我收到以下异常
将数据类型 varchar 转换为数值时出错。
我想得到像 0.2,0.4,0.6 这样的结果
【问题讨论】:
标签:
sql-server
sql-server-2008
sql-server-2005
sql-server-2000
【解决方案1】:
您无法将该 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
【解决方案2】:
试试这个
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))
【解决方案3】:
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