Преобразование nvarchar в numeric на сервере MSSQL
У меня есть столбец nvarchar со списком записей, таких как (включая нули) -
-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.
может кто-нибудь помочь?
3 ответов
ваши данные будут иметь значения, которые не являются допустимыми числовыми значениями. Использовать 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
.
просто чтобы продемонстрировать метод Гордона в случае необходимости OP:
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, если он не может преобразовать строку. Если это возможно, он сможет преобразовать его в числовое число