Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
varchar类型中需要转换回浮点类型的SQL Server浮点数_Sql_Sql Server_Type Conversion_Varchar - Fatal编程技术网

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