我想将varchar
转换为float
,但收到错误:
将数据类型varchar转换为float
时出错
这是遇到错误的代码详细信息:
declare @per varchar(10) = '10.21%';
print substring(@per, 1, len(@per) - 1);
set @str = 'select top 1 ' + cast(substring(@per, 1, len(@per) - 1) as float) + ' as ColumnA from #TempSui' ;
exec (@str);
答案 0 :(得分:0)
你的这句话substring(@per,1,len(@per) -1)
提取没有%的数字,然后转换为float
之后,您尝试将字符串select top 1
与浮点数连接起来。导致错误。
删除cast(),它应该是好的
set @str = 'select top 1 ' + substring(@per,1,len(@per) -1) + '
AS ColumnA from #TempSui' ;
编辑:
set @str = 'select top 1 ' + 'CAST ( ' + substring(@per,1,len(@per) -1)
+ ' AS FLOAT) AS ColumnA from #TempSui' ;
编辑2: 不确定#TempSui表的目的是什么,如果只需要将@per转换为浮点数,就可以这样做
SELECT CAST(substring(@per,1,len(@per) -1) AS FLOAT);
答案 1 :(得分:0)
答案 2 :(得分:0)
您也可以通过以下方式执行此操作:
DECLARE @per VARCHAR(10)= '10.21%';
DECLARE @str NVARCHAR(MAX);
PRINT SUBSTRING(@per, 1, LEN(@per)-1);
SELECT @per = CAST(SUBSTRING(@per, 1, LEN(@per)-1) AS FLOAT);
SET @str = 'select top 1 '+@per+' [ColumnA] from #TempSui';
EXEC (@str);
结果:
10.2
select top 1 10.21 [ColumnA] from #TempSui
答案 3 :(得分:0)
只需更改行
即可set @str = 'select top 1 convert(float,'+''''+'' + substring(@per,1,len(@per) -1) + ''+''''+') as ColumnA from #TempSui' ;
试试这段代码:
declare @per varchar(10) = '10.21%';
print substring(@per, 1, len(@per) - 1);
set @str = 'select top 1 convert(float,'+''''+'' + substring(@per, 1, len(@per) - 1) + ''+''''+') as ColumnA from #TempSui' ;
exec (@str);