varchar类型中需要转换回浮点类型的SQL Server浮点数
我对varchar类型中需要转换回浮点类型的SQL Server浮点数,sql,sql-server,type-conversion,varchar,Sql,Sql Server,Type Conversion,Varchar,我对varchar浮点数有问题,例如2.045.030,需要从varchar转换为float 当尝试使用任何try\u parse,try\u convert,try\u cast函数时,我得到的是NULL而不是转换后的值 这在SQL server数据库上 有人有类似的问题吗?似乎这些值的格式是使用作为千位分隔符(以及,作为小数点),因此请删除这些点并用小数点替换逗号: DECLARE @num varchar(50) = '2.045.030,725'; SELECT CAST(REPLACE
varchar
浮点数有问题,例如2.045.030,需要从varchar
转换为float
当尝试使用任何try\u parse
,try\u convert
,try\u cast
函数时,我得到的是NULL而不是转换后的值
这在SQL server数据库上
有人有类似的问题吗?似乎这些值的格式是使用
作为千位分隔符(以及,
作为小数点),因此请删除这些点并用小数点替换逗号:
DECLARE @num varchar(50) = '2.045.030,725';
SELECT CAST(REPLACE(REPLACE(@num, '.', ''), ',', '.') AS float);
结果:2045030.725
2.045.030
数据有两点。它不是一个有效的浮点。你也可以用空字符串替换句点,并使用使用逗号小数分隔符的区域性来使用TRY\u PARSE
:TRY\u PARSE(使用“pt pt pt pt”将(@num,“,”)替换为浮点)
我想我找到了一种方法,需要进行测试,看看它是否适用于所有情况,因为它们非常不幸。请尝试转换(浮子,混凝土(替换(子串('2.045.030',1,PATINDEX('2.045.030','2.045.030')),',',''),子串('2.045.030','2.045.030','2.045.030')+1,LEN(2.045.030)))@user2719567好吧,如果2045.03是您想要的数字…您的表达式将删除前千个分隔符,并将第二个分隔符解释为小数点。第三个分隔符将失败:2.045.030.123