我有一个包含多个条目的nvarchar列(包括NULL)-
-1.00000
0.000000
0.010000
0.100000
0.500000
00000000
1.000000
1.500000
10.00000
10.50000
100.0000
1000.000
1001.000
1006.000
NULL
NULL
我想将这个字段转换为数字类型,以便我可以使用它来进行一些计算。但是,我收到了以下错误信息-
“转换数据类型nvarchar为float时出错。”
请有人帮忙吗?我有一个包含多个条目的nvarchar列(包括NULL)-
-1.00000
0.000000
0.010000
0.100000
0.500000
00000000
1.000000
1.500000
10.00000
10.50000
100.0000
1000.000
1001.000
1006.000
NULL
NULL
我想将这个字段转换为数字类型,以便我可以使用它来进行一些计算。但是,我收到了以下错误信息-
“转换数据类型nvarchar为float时出错。”
请有人帮忙吗?您的数据似乎有非有效数值。请使用 try_convert()
:
select try_convert(numeric(38, 12), col)
NULL
。select col
from t
where try_convert(numeric(38, 12), col) is null and col is not null;
在引用该列作为数字时,您需要使用 try_convert()
。在 select
中进行转换仅适用于 select
。
TRY_CONVERT
不会生成该错误;如果转换失败,则返回 *NULL
*。也许你可以使用你(新的)查询编辑你的帖子? - Thom ATRY_CONVERT
之前尝试转换该值。 - Dan Guzmantry_convert
可以在 SQL Server(从 2012 开始)中使用,但是当我尝试使用示例时,出现了错误 Msg 195, Level 15, State 10, Line 2 'TRY_CONVERT' is not a recognized built-in function name.
。 示例代码为:SELECT TRY_CONVERT(INT, 'A100.000') AS ValueInt
。 - Mahesh.KTRY_PARSE
和 TRY_CAST
函数的工作良好 :( - Mahesh.K如果需要,可以演示Gordon的方法:
create table #test(val nvarchar(100));
insert into #test values
('-1.00000'),
('0.000000'),
('0.010000'),
('0.100000'),
('0.500000'),
('00000000'),
('1.000000'),
('1.500000'),
('10.00000'),
('10.50000'),
('100.0000'),
('1000.000'),
('1001.000'),
('1006.000'),
(NULL),
(NULL)
select val, TRY_CONVERT(numeric(38,12),val) as converted_val from #test
try_convert(numeric(38,5), [ColumnName])
当无法将字符串转换时,它将返回 NULL。如果可以,它将能够将其转换为数字。convert
select Convert(float, "column_name") from TABLE
空白字段将返回为0。